【发布时间】:2017-03-02 04:15:16
【问题描述】:
如果你说过
int *arr = new int[5];
有什么区别
delete arr;
和
delete [] arr;
我问这个是因为我试图释放二维数组的内存并且
delete [][] arr;
似乎没有用,但是
delete arr;
似乎工作正常
提前谢谢你!
【问题讨论】:
-
这是一个自动或静态数组。在任何一种情况下,调用
delete或delete[]都是未定义的行为。因此,“差异”是无关紧要的。 都不正确。你的书/教程是否认真地指出了你的方向?因为如果是这样,请换一个。 Related question here. -
对不起,我的意思是 arr 是一个指针。但是是的,我的教科书建议我们对数组使用 delete [] arr。
-
当然是在 dynamic 数组上。在自动数组上,no。简而言之,如果你
new你delete,如果你new [n]你delete[]。就是这样。 -
了解我误解了数组中维度的括号。那么 delete [] 数组对于二维数组也是一种好习惯吗?
-
再一次,如果你使用了array-new,那么使用array delete。如果您拥有的“事物”被分配了某种形式的
new [],那么将使用delete []。坦率地说,没有一个是理想的in modern c++ anyway。
标签: c++ arrays memory-management