我已经分配了对象数组
Objects *array = new Objects[N];
我应该如何删除这个数组?
只是
delete[] array;
或者迭代数组的元素?
for(int i=0;i<N;i++)
delete array[i];
delete[];
Thanks
UPDATE:
我将循环体更改为
delete &array[i];
强制代码编译。
每次使用new
应该通过一个平衡delete
,以及每次使用new[]
应该平衡delete[]
.
for(int i=0;i<N;i++)
delete array[i];
delete[] array;
仅当您将数组初始化为:
Objects **array = new Objects*[N];
for (int i = 0; i < N; i++) {
array[i] = new Object;
}
事实上,你的原始代码给了你一个编译错误强烈暗示你做错了什么。
顺便说一句,强制:避免使用以下方式分配数组new[]
; use std::vector
相反,然后它的析构函数将为您负责清理工作。此外,如果抛出异常,它不会泄漏内存,因此是异常安全的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)