【发布时间】:2011-05-27 17:08:10
【问题描述】:
我知道当我们使用new/new[]分配内存时,我们应该分别使用delete/delete[]来释放内存。
问题来了,
可以用delete[]释放new分配的内存吗?
例如,
int *pInt3 = new int;
delete [] pInt3;
pInt3 = NULL;
T *pT3 = new T;
delete [] pT3;
pT3 = NULL;
谢谢
【问题讨论】:
-
既然已经知道答案,为什么还要问这个问题?
-
如果可能的话,删除 [] 和删除没有任何意义。
-
@wnoise,我问的原因是 new int 或 new T 是创建一个大小为 1 的数组。因此,如果使用 delete[],它似乎应该可以工作。 -- 谢谢
-
q0987:为什么要浪费时间想知道它在某些特定情况下是否可行?只需使用
delete的匹配表并继续您的工作。当然,除了关于new/delete/new[]/delete[]和i++ = ++i + i++的反复出现的SO 问题之外,还有更多有趣的编程方面需要讨论。 -
q0987: 不,T类型的单个对象和大小为1的T类型的数组是有区别的。数据的实际内存分配可能是相同的(一项类型T),但是围绕分配的数据的簿记不太可能完全一样。特别是,对于长度为 1 的数组,需要将长度为 1 的数组存储在某处,但它不适用于单个元素。
标签: c++