new 和 new[ ] 的区别

difference between new and new[ ]

int* arr = new int [5];int* arr = new int();有什么区别?

int* arr = new int [5];

上面分配了5个int的数组,没有初始化,赋值给新变量arr。应使用 delete [] arr;.

释放数组
int* arr = new int();

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

释放内存

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

由于您的程序此后不久就结束了,因此泄露这些分配以避免补差是可以接受的。你应该添加一个评论,你这样做是有意的。