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

目录
相关文章
|
中间件 API
nuxt3:我们开始吧-开发-配置-部署(二)
nuxt3:我们开始吧-开发-配置-部署(二)
634 0
|
存储 自然语言处理 PyTorch
Transformer 自然语言处理(三)
Transformer 自然语言处理(三)
456 0
Transformer 自然语言处理(三)
|
机器学习/深度学习 人工智能 算法
构建未来:人工智能在持续学习系统中的进化
【5月更文挑战第23天】 探索人工智能如何通过模拟生物神经网络和复杂算法,实现自我优化与知识积累。本文将深入分析自学习AI系统的关键技术,包括深度学习、增强学习及未监督学习,并探讨这些技术如何推动AI从静态的知识库向动态的、持续发展的认知实体转变。通过具体案例,揭示自学习系统在处理大数据、进行预测分析以及在自动驾驶、医疗诊断等领域的应用前景。最终讨论了此类系统面临的挑战,如数据隐私、算法偏见和伦理问题,并提出潜在的解决策略。
|
弹性计算 缓存 关系型数据库
开源MySQL在倚天ECS上的最佳优化实践
我们总结了在倚天上自建MySQL的基本优化手段,并在阿里云ECS G8y实例(基于Armv9的倚天710处理器)和G8i实例(x86)上做了开源8.0.34版本的MySQL的性能测试对比,优化后MySQL在G8y上的性能相对于未优化在G8i上的性能在只读场景有63%的性能优势,在读写混合场景有35%的性能优势;相对于优化后的G8i仍能保持只读场景20%的性能优势,读写混合场景5%的性能优势。
590 3
|
算法 C语言
计算方法试验
计算方法试验
145 0
|
运维 Kubernetes 监控
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器,只需要25分钟
今天分享JumpServer堡垒机,带领大家搭建以及使用JumpServer连接我们的后端server服务器。 这里安装的版本v2.22.2,采用的是离线部署JumpServer堡垒机,相应的还有一键部署、手动部署、kubernetes部署、源码部署等。更多信息请使用文章末尾链接查看。 <br> # 一、什么是堡垒机? 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
1220 0
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器,只需要25分钟
|
存储 安全 数据安全/隐私保护
无影云电脑软件开发最佳实践
传统办公电脑和管理方法在应对企业信息安全方面存在较多的安全风险。随着企业办公向开发外包、BYOD等方向发展,保证开发环境在不同场景、不同终端下的安全可靠,防止核心数据丢失与泄密,成为企业管理者面临的首要问题。
无影云电脑软件开发最佳实践
|
存储 缓存 监控
阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁!附架构资料
淘宝技术架构变迁 自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长。创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux作为操作系统,Apache作为Web服务器,MySQL为数据库,用了三个月不到的时间淘宝就上线了。
7672 0
|
Android开发
解决 error: style attribute '@android:attr/windowEnterAnimation' not found.
解决 error: style attribute '@android:attr/windowEnterAnimation' not found.
251 0