社区
C语言
帖子详情
操作系统会回收泄漏掉的内存吗?
scbeans
2003-08-27 11:12:15
一个发生了内存泄漏的程序在关闭后,操作系统能否把所有泄漏掉的内存收回来?
...全文
214
23
打赏
收藏
操作系统会回收泄漏掉的内存吗?
一个发生了内存泄漏的程序在关闭后,操作系统能否把所有泄漏掉的内存收回来?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
thrillers
2003-08-28
打赏
举报
回复
学习
scbeans
2003-08-28
打赏
举报
回复
多谢各位捧场!
潘多拉猫之碧海蓝天
2003-08-28
打赏
举报
回复
不要以为用了java就不会发生内存泄漏了!到目前为止还没有一种好的方案可以彻底解决垃圾回收的,有很多情况实际上发生了内存泄漏,但java根本无法判断是否是不需要的内存。
liao2001
2003-08-27
打赏
举报
回复
自己的问题自己解决,不要把责任都推给别人
scbeans
2003-08-27
打赏
举报
回复
楼上的,
不同的OS会有不同表现?
具体点,比如WINDOWS…… ?
tomsx
2003-08-27
打赏
举报
回复
depending on what OS be used at that moment...
Jinhao
2003-08-27
打赏
举报
回复
当然可以,但你不能写出类似于下面的代码
int main()
{
int *p=new int[100];
...
//delete []p; 因为程序马上要退出了,我就不释放内存从而提高效率
return 0;
}
这是一个编码习惯的问题。
POLOM
2003-08-27
打赏
举报
回复
泄漏内存的程序退出后,操作系统会回收其所有内存
feixue3000
2003-08-27
打赏
举报
回复
sure
sevecol
2003-08-27
打赏
举报
回复
能。
Tinybaby
2003-08-27
打赏
举报
回复
Windows好像能
它给每个独立的进程是4Gb的空间,这4Gb是虚拟的,目的是隔离,系统只把实际上用到的东西装进物理内存(包括虚拟内存),在某个进程结束时,系统肯定使用整理一下内存的,当然这个过程也包括回收泄漏的内存
Tinybaby
2003-08-27
打赏
举报
回复
Windows好像能
它给每个独立的进程是4Gb的空间,这4Gb是虚拟的,目的是隔离,系统只把实际上用到的东西装进物理内存(包括虚拟内存),在某个进程结束时,系统肯定使用整理一下内存的,当然这个过程也包括回收泄漏的内存
kundy
2003-08-27
打赏
举报
回复
1
系统分配内存是以进程为单位的,呵呵
当进程结束的时候,会回收它所占有的所有资源,包括内存。
如skywater(宁镇子) 所说,“用C/C++编写的程序造成的内存泄漏,在程序运行的过程中是不会被回收的。所以如果程序长时间运行之后,所吃掉的内存有可能导致操作系统的崩溃。程序终止运行之后,操作系统会收回程序所占用的资源,包括内存。”
trackant
2003-08-27
打赏
举报
回复
有理,即使不擦也可以,晚上洗澡的时候自然就干净了,只是这一天可能会过得不太爽。。。
fei1703
2003-08-27
打赏
举报
回复
粗俗一点说,就是自己拉屎,自己擦屁股。
--------------------------------------------------
有趣!
skywater
2003-08-27
打赏
举报
回复
1
用C/C++编写的程序造成的内存泄漏,在程序运行的过程中是不会被回收的。所以如果程序长时间运行之后,所吃掉的内存有可能导致操作系统的崩溃。程序终止运行之后,操作系统会收回程序所占用的资源,包括内存。
所以说,用C/C++写程序要特别小心,自己分配的内存要记得回收,有malloc,一定要有free,有new,一定要有delete。粗俗一点说,就是自己拉屎,自己擦屁股。
但是如果用JAVA编写程序的化,因为JAVA有内存回收机制,所以不会造成内存的泄漏。
robbie24
2003-08-27
打赏
举报
回复
正确的回收以及管理内存,本身就是作为OS的一项功能存在的.
但是,从程序员的角度出发,(也是道德准则),你抓来的内存你不释放,你写出来的东西谁敢用?
是的是的,我知道你又要说了,很多OS都支持虚拟内存技术,我不担心.对,虚拟内存的却是件美好的东西,但又不是每一个人从一开始就拥有虚拟内存的.(想想你的client) ^_^
riverboat
2003-08-27
打赏
举报
回复
会的,呵呵
wbh0360
2003-08-27
打赏
举报
回复
当然会了!
但是,程序未结束可能回用完内存,那不就玩完了!
njtu
2003-08-27
打赏
举报
回复
能回收。
不过最好自己来。
加载更多回复(3)
程序运行结束后,
内存
泄漏
还存在吗?
先说结论:对于现代
操作系统
,泄露的
内存
会
被
操作系统
自动释放,叫
内存
自动
回收
。 那为什么程序员要手动释放
内存
呢? 原因1:如果程序存在
内存
泄漏
,但恰好运行的
操作系统
可以帮你自动释放,那么短时间运行没问题。但是,如果移植到另一个没有
内存
自动
回收
功能的
操作系统
,怎么办? 原因2:大多数程序是服务端的守护进程,是一直运行的,如果存在
内存
泄漏
,那么经过长时间的累计,
会
造成严重问题,程序
会
崩溃,
操作系统
...
哪些操作
会
造成
内存
泄漏
?
定时器或事件监听器未正确清理:如果创建了定时器或事件监听器,但没有在不需要时将其清理,这些定时器和监听器将一直存在于
内存
中,导致
内存
泄漏
。资源未正确释放:在使用需要手动释放的资源(如文件、网络连接、数据库连接等)时,如果没有正确释放这些资源,就
会
造成
内存
泄漏
。循环引用:当两个或多个对象互相引用,而没有被其他对象引用时,这些对象将无法被垃圾
回收
机制
回收
,导致
内存
泄漏
。缓存未正确管理:在使用缓存时,如果没有管理好缓存的大小和生命周期,可能
会
导致
内存
泄漏
。
进程结束new出的
内存
会
回收
吗?
今天调试程序,弄得有点纠结。无意间,和一帮同事讨论起一个问题:进程结束
操作系统
会
回收
new的
内存
吗?在自己的印象中,一直固执地认为,在使用C++操作分配对象
内存
后,如果程序员自己不用相应的delete操作
回收
的话,这块从堆
内存
是一直存在。在讨论中,有同事提醒说,在进程结束后,new操作的
内存
会
被
回收
。但也只是结论,也说不出具体理由。 没关系,何不google一下,一查下去
js垃圾
回收
机制和
内存
泄漏
知识线 什么是
内存
泄漏
?=> 是什么导致的
内存
泄漏
?=> 怎么解决
内存
泄漏
?=> 垃圾
回收
机制的策略(两种) => 如何管理好
内存
? 面试官:什么是
内存
泄漏
?为什么
会
导致
内存
泄漏
? 什么是
内存
泄漏
? 不再用到的
内存
,没有及时释放,就叫做
内存
泄漏
。 为什么
会
导致
内存
泄漏
?
内存
泄漏
是指我们已经无法再通过 js 代码来引用到某个对象,但垃圾
回收
器却认为这个对象还在被引 用,因此在
回收
的时候不
会
释放它。 导致了分配的这块
内存
永远也无法被释放出来。如果这样的情况越 来越多,
会
导致
内存
不
java有自己的
内存
回收
机制,但为什么还存在
内存
泄漏
的问题?
1.既然 Java 的垃圾
回收
机制能够自动的
回收
内存
,怎么还
会
出现
内存
泄漏
的情况呢? 这个问题,我们需要知道 GC 在什么时候
回收
内存
对象,什么样的
内存
对象
会
被 GC 认为是“不再使用”的。 Java中对
内存
对象的访问,使用的是引用的方式。在 Java 代码中我们维护一个
内存
对象的引用变量,通过这个引用变量的值,我们可以访问到对应的
内存
地址中的
内存
对象空间。在 Java 程序中,这个引用变量本身既...
C语言
69,322
社区成员
243,077
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章