还是delete提问,顺便谢谢ubin

lingling1989r lingling1989r 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
之前一个帖子没有解决:http://topic.csdn.net/u/20090128/22/be3ad768-1c3f-4590-8d04-8881364ded44.html
ubin给了我一个回复:



你的帖子中有如下提问,好像没人理会:
“我以为,delete []ap,就会把只要是ap指针new出来都东西一起消了。
那如果没错都话,谁能给我解释一下吗?我不明白它new出来都东西,用delete[]ap是怎样知道哪些是由ap指针new出来的呢?他们是怎么存储的呢?ap都指向是什么?”

如果是 delete ap; 的话编译器在解释这一句时,它很清楚两件事:其一、ap这个指针的类型,即它所指向类对象的大小;其二、ap这个指针的值,即它所指向类对象的首地址。
那么知道了内存的首址和大小,释放这个内存块也就不是什么难事了。你要纠正一个误解,调用一次delete只能释放一个对象!如果反复new的话,就需要反复delete,这是一一对应的关系,不可能在一次delete中释放以前所有new出来的对象,用delete[]也不行!变量ap只能存放一个对象的首地址,对它第二次赋值时,以前的值就丢失了!

delete[] 与 new[] 对应,其实你需要奇怪的是,在释放对象数组时同样也只是知道首对象的首地址,它是怎么推断出数组大小的!!!

但我还有疑问想确定一下:
因为“变量ap只能存放一个对象的首地址,对它第二次赋值时,以前的值就丢失了!”
那我若是这么写:
class A{};
list<A *>::alist;
A *ap;
ap=new A;
alist.push(ap);
ap=new A;
alist.push(ap);
//然后若此处我list<A*>::iterator it=alist.begin();去用我这个alist里的东西的话,是不是根本都没法用啊?
若是如此的话,我是不是只有每次New的时候,要写成ap=new A[++i];这样才能保证我使得重复用这个指针去new而又能存到list里去用?
最后再
for(int x=1;x<=i;x++)
{delete ap[x];alist.clear();}或者for(list<A *>::iterator it=alist.begin();it!=alist.end();++it){delete (*it);}

那这样行吗?
...全文

相关推荐

毕业设计含文档和代码VB商品配送中心库存仿真软件设计(源代码+论文)

毕业设计含文档和代码VB商品配送中心库存仿真软件设计(源代码+论文)

zz_ll9023

硕士复现燃料电池供氢系统建模及控制策略Simulink仿真(附带说明PPT+参考文献+复现模型+实物源码)

内容概要:本文围绕“【硕士复现】燃料电池供氢系统建模及控制策略Simulink仿真”这一科研资源包,系统介绍了燃料电池供氢系统的完整建模与控制策略仿真方案。资源包涵盖Simulink仿真模型、说明PPT、参考文献、复现模型及实物源码,重点实现了供氢系统的动态建模、压力与流量控制、氢气供给稳定性优化等核心功能,并采用先进的控制算法(如PID、MPC等)进行策略设计与验证。该资源注重理论与实践结合,完整呈现从系统建模、控制器设计到仿真调试的全流程,适用于新能源、氢能利用、电力电子与自动控制等领域的科研与工程应用。; 适合人群:具备一定MATLAB/Simulink操作基础,从事新能源、氢能技术、电力电子、自动化控制等方向的硕士研究生、科研人员及工程技术人员。; 使用场景及目标:①用于燃料电池供氢系统的教学演示与课程设计;②支撑科研项目中的系统建模与控制算法验证;③辅助毕业论文或学术论文的仿真部分复现与优化。; 阅读建议:建议使用者先阅读配套PPT和参考文献以建立理论基础,再结合Simulink模型逐步调试与修改参数,深入理解控制策略的设计思路与实现细节,鼓励在此基础上进行创新性改进与拓展研究。

荧光Matlab

科技中介服务机构如何通过平台提升服务效率与专业度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

工博会资料工博会资料工博会资料122

工博会资料工博会资料工博会资料122

音符o

高校技术转移办公室人员如何提升成果转化项目的匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论 2
收藏 已收藏
分享
返回顶部
lingling1989r
C++ 语言 65,214 成员 250,514 内容