新与新[ ] 之间的区别

difference between new and new[ ]

本文关键字:区别 之间      更新时间:2023-10-16

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

int* arr = new int [5];

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

int* arr = new int();

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

越界访问或尝试以错误的方式释放某些内容都会导致未定义行为,这意味着编译器和运行时都不受任何要求。

由于您的程序不久之后就结束了,因此可以泄漏这些分配以避免制作工作。不过,您应该添加一条评论,说明您有意这样做。