新旧之间的区别[]

时间:2018-05-24 15:07:55

标签: c++ arrays new-operator

int* arr = new int [5];int* arr = new int();之间的区别是什么?

1 个答案:

答案 0 :(得分:2)

int* arr = new int [5];

以上分配5 int的数组而不初始化它们,并将其分配给新变量arr。应使用delete [] arr;释放数组。

int* arr = new int();

上面分配了一个值初始化int,并将其分配给错误命名的新变量arr。应使用delete arr;释放内存。

访问越界,或试图以错误的方式释放某些东西导致Undefined Behavior,这意味着编译器和运行时都没有任何要求。

由于您的程序在此后不久结束,因此可以泄漏这些分配以避免make-work。你应该添加一个你故意这样做的评论。