removing objects from an array

简介:

I am creating a program that uses an array of objects declared with

Element* elements =newElement[number];

where an element is a class that has/needs a its own destructor.

when I go to delete this would I use just use array delete, and have the program worry about calling the destructor:

delete[] elements;

or do I call the destructor for each item explicitly with keyword delete:

for ( int  ii =0; ii<ArraySize; ii++)
     delete  elements[ii];
delete [] elements;

Note: I understand that I could probably use something like boost::ptr_vector, but I wanted similar to hashTable functionality (so the for loop would need additional information, but that is outside of the direct scope of this question) which is why I am using a traditional array. I would still like to know which behavior is needed to avoid memory leaks.

解答:

第一个是正确的,第二个会得到编译错误。

这个问题主要的问题其实是对于多位数组的动态内存分配的问题。比如我们不能直接使用int* p=new int[4][3];等的的。

而是应该借鉴下面的例子:

1
2
3
elements =  new  Element *[rows];
for  ( int  i=0; i<rows; i++)
     elements[i] =  new  Element[row_len];

  然后采用:

1
2
3
for  ( int  i=0; i<rows; i++)
     delete  [] elements[i];
delete  [] elements;

  原文地址:http://stackoverflow.com/questions/10425354/removing-objects-from-an-array


==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/05/03/2480881.html,如需转载请自行联系原作者

相关文章
|
JavaScript 测试技术
【若川视野 x源码共读】第33期 | arrify 转数组 Convert a value to an array
mac: 在github代码仓库页面通过快捷键 command + k,再在文本框中输入 &quot;&gt;&quot;,即可查看到在线打开的命令行
94 0
LeetCode contest 200 5476. 找出数组游戏的赢家 Find the Winner of an Array Game
LeetCode contest 200 5476. 找出数组游戏的赢家 Find the Winner of an Array Game
|
Java
[LeetCode]Degree of an Array 数组的度
链接:https://leetcode.com/problems/degree-of-an-array/description/难度:Easy题目:697.
1018 0
|
机器学习/深度学习 人工智能
|
7月前
|
Python
使用array()函数创建数组
使用array()函数创建数组。
134 3
|
2月前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
2月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
2月前
|
存储 JavaScript 前端开发
JavaScript Array(数组) 对象
JavaScript Array(数组) 对象
27 3