首页 > 解决方案 > 新和新的区别[ ]

问题描述

int* arr = new int [5];和 和有什么不一样int* arr = new int();

标签: c++arraysnew-operator

解决方案


int* arr = new int [5];

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

int* arr = new int();

上面分配了一个 value-initialized int,并将其分配给错误命名的 new variable arr。应该使用释放内存delete arr;

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

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


推荐阅读