社区
C++ 语言
帖子详情
内存的概念
科比布莱恩特
2011-09-16 09:15:22
在程序中new了一个对象或类型,程序中不释放,退出程序时也不释放,那么当程序退出后,程序所new的那块内存还会在系统中存在么?
...全文
306
30
打赏
收藏
内存的概念
在程序中new了一个对象或类型,程序中不释放,退出程序时也不释放,那么当程序退出后,程序所new的那块内存还会在系统中存在么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
avcodec-decoder
2011-09-20
打赏
举报
回复
程序退出,内存释放
苍蝇①号
2011-09-20
打赏
举报
回复
我知道在linux下的用户空间进程退出时是肯定会释放内存的~~~~现在的os给进程分的是虚拟内存又不是物理内存,不用虚拟内存的系统很少很少了
康斯坦汀
2011-09-20
打赏
举报
回复
[Quote=引用 25 楼 kingskyleader 的回复:]
引用 21 楼 shiyunqiang 的回复:
程序退出,系统会自动回收。
你写java得吧
[/Quote]
java和C#具有内存回收机制,这个是指在运行过程中,程序退出,进程结束。
其未释放的内容会有操作系统回收,这个跟某种语言无关!
七擒关羽
2011-09-20
打赏
举报
回复
举个比较明显的比喻好了:
内存-黑板
一般你再黑板上写完字都会擦掉
如果下课,老师会布置一个人去擦掉
如果放学了,会有特定的人去擦黑板
这个在设计系统的时候都会考虑到的,如果你设计系统,会没有释放内存的机制吗?
Cielleech
2011-09-20
打赏
举报
回复
程序退出,本身进程所申请的内存被系统回收,new申请的内存也是进程申请的内存中分配的,所以也会被释放。
君子美玉
2011-09-20
打赏
举报
回复
[Quote=引用 21 楼 shiyunqiang 的回复:]
程序退出,系统会自动回收。
[/Quote]你写java得吧
君子美玉
2011-09-20
打赏
举报
回复
内存泄露……
辰岡墨竹
2011-09-20
打赏
举报
回复
这就是为什么Google的Chrome浏览器选择每个标签页(Web页面)都在一个单独的进程里,就是因为进程退出时,所有进程用的内存全部会被回收,所以像Javascript引擎这样的就算出错或轻微泄漏也不用担心。
不过对于某些要长时间在一个进程里运行的程序,如果出现内存泄漏可能会导致耗光系统可用内存,所以new必须要养成delete的习惯。
辰岡墨竹
2011-09-20
打赏
举报
回复
[Quote=引用 19 楼 qaz225cn 的回复:]
嗯,,微机原理真是不太明白
我从汇编的角谈一谈吧,c/c++ 最后还是会编译成汇编 new()的位置是会放在 堆 中,分配一块地址,然后返回地址首地址,而堆是系统虚拟的内存。
然后调用的时候,堆里的数据是把堆的指针传入SS堆栈段寄存器,push pop 再push 数据处理后又返回虚拟内存,这样如果不释放new()是不会影响cpu,也不影响内存,可能影响虚拟内存。
(后文是百度的)另外操……
[/Quote]
没那么麻烦,只要退出时把进程用的虚拟内存页表全释放掉就可以了。
4楼的xxwy89。
别忘了虚拟内存机制里进程的独立4GB地址空间,和其它进程隔离的,这其中的内存页映射都是OS管理的。进程退出时进程用的页表消失,自然不会占用任何内存空间。
shiyunqiang
2011-09-20
打赏
举报
回复
程序退出,系统会自动回收。
qaz225cn
2011-09-20
打赏
举报
回复
上面进入堆栈段寄存器的时候,对寄存器操作代码写错了,该是pop保存原来段寄存器中的数据 然后push 载入 计算了处理后 然后pop 保存处理后的数据,
qaz225cn
2011-09-20
打赏
举报
回复
嗯,,微机原理真是不太明白
我从汇编的角谈一谈吧,c/c++ 最后还是会编译成汇编 new()的位置是会放在 堆 中,分配一块地址,然后返回地址首地址,而堆是系统虚拟的内存。
然后调用的时候,堆里的数据是把堆的指针传入SS堆栈段寄存器,push pop 再push 数据处理后又返回虚拟内存,这样如果不释放new()是不会影响cpu,也不影响内存,可能影响虚拟内存。
(后文是百度的)另外操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,所以不释放,程序结束后系统收回是可以的
Jonix
2011-09-20
打赏
举报
回复
两个不同的立场产生了。
现在的32位OS,内存是建立在虚拟内存,而不是物理内存上的。
所以1楼的说法是正确的。
但是以前的DOS系统,内存是直接在物理级的,就会出现很严重的问题了。
Michael_g
2011-09-20
打赏
举报
回复
你的程序崩溃不是因为没释放,很可能是引用了错识的指针,或操作已释放的内存。单纯不释放new 的内存是不引起崩溃的(除了内存不足)。
Michael_g
2011-09-20
打赏
举报
回复
现在的32位cpu下,程序(进程)退出后其所有申请的内存都会被释放,这是保护模式的特点,所有的进程都拥有整个地址空间,但它们又不直正拥有物理内存,这是通过虚似内存及分页来实现的。
PG
2011-09-20
打赏
举报
回复
[Quote=引用 11 楼 pathuang68 的回复:]
程序退出时,该程序中所new的内存会由系统释放。
[/Quote]
++
科比布莱恩特
2011-09-20
打赏
举报
回复
程序退出时倒底会释放我所有new过的内存么?
程序中因为这个东西使程序崩溃过,怎么解释?
simimasaiya
2011-09-16
打赏
举报
回复
对于这一点我也同样有些疑问,不过我觉得当整个程序结束的时候,在执行过程中分配的内存——无论在执行末尾有没有得到释放——肯定是强制释放了,因为程序的执行单位即进程,有个进程控制块PCB,PCB分配了内存来供进程在运行过程中使用,当程序结束的时候,PCB也压根没有了,更别说PCB所占的内存了。
个人粗浅理解,错误之处请他人指正。
AndyZhang
2011-09-16
打赏
举报
回复
会,除非你重启
pathuang68
2011-09-16
打赏
举报
回复
程序退出时,该程序中所new的内存会由系统释放。
加载更多回复(10)
免费 Canvas + javascript实现的弹球打砖块游戏,可直接下载使用
免费 Canvas + javascript实现的弹球打砖块游戏,可直接下载使用
黑马前端练习项目之静态网页开发实践学成教育机构官网仿制与前端技能综合训练_教育机构官网在线学习平台课程展示师资介绍学员案例新闻动态联系我们响应式布局多页面导航.zip
黑马前端练习项目之静态网页开发实践学成教育机构官网仿制与前端技能综合训练_教育机构官网在线学习平台课程展示师资介绍学员案例新闻动态联系我们响应式布局多页面导航.zip
车辆ACC自适应巡航控制Matlab模型包括直路控制策略、弯路控制策略、制动油门控制策略、安全距离计算
内容概要:本文档主要介绍了一个关于车辆ACC(自适应巡航控制)的Matlab仿真模型,涵盖直路与弯路行驶条件下的控制策略、制动与油门控制逻辑以及安全距离计算方法。该模型旨在通过Matlab平台实现对ACC系统核心功能的建模与车辆ACC自适应巡航控制Matlab模型包括直路控制策略、弯路控制策略、制动油门控制策略、安全距离计算仿真,帮助研究人员理解和优化车辆在不同路况下的自动跟车与速度调节能力。文档还列举了多个其他Matlab/Simulink仿真项目,涉及电力系统、路径规划、信号处理、机器学习等多个领域,表明其所属团队在科研仿真方面的广泛技术支持能力。; 适合人群:具备Matlab编程基础,从事汽车电子、智能驾驶、控制工程等相关领域研究的研发人员和高校研究生。; 使用场景及目标:①学习并实现车辆ACC系统的控制算法;②开展自动驾驶相关控制策略的仿真验证;③作为智能交通系统或车辆控制系统课程的教学参考案例; 阅读建议:建议结合Matlab仿真环境实际操作,重点关注控制策略的设计逻辑与参数调优过程,并可借鉴文中提供的其他仿真案例拓展研究思路。
(52页PPT)社会综治大数据一体化管理云平台解决方案.pptx
(52页PPT)社会综治大数据一体化管理云平台解决方案.pptx
农业物流配送中心选址策略的并行乌鸦搜索算法.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
C++ 语言
65,208
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章