进程退出后,泄漏在其中的内存会被os回收,我的观点是不是准确的 ?

方紫涵 2014-01-08 10:00:10
malloc申请的内存在heap里,进程exit后,进程的heap区就还给os了,
所以泄漏就不存在了。

对不对 ?
...全文
374 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2014-01-08
  • 打赏
  • 举报
回复
引用 9 楼 lm_whales 的回复:
进程exit,进程的所有自有内存,都会释放掉,包括heap区。
现在的操作系统而言
lm_whales 2014-01-08
  • 打赏
  • 举报
回复
进程exit,进程的所有自有内存,都会释放掉,包括heap区。
赵4老师 2014-01-08
  • 打赏
  • 举报
回复
《深入解析Windows操作系统-Windows Internals》进程管理、内存管理。
羽飞 2014-01-08
  • 打赏
  • 举报
回复
引用 6 楼 xwhbwas2008 的回复:
[quote=引用 1 楼 hnwyllmm 的回复:] 每个进程起来用的内存都是虚的,不是有整个操作系统统一分配的,所以你的进程即使异常退出了,也不会影响整个OS的运行。其实也不存在进程的Heap区还给OS,因为他的Heap是专属进程的,进程结束了,也就没了,而且这个Heap不是从OS中的某部分内存分出来的
问下你这里的 不是有整个操作系统统一分配的 是不是“由”? 再就是能详细解释下这句话不 ?[/quote] 是由,打错了不好意思。 我的意思是,每个进程都有自己专属的内存空间。当操作系统创建一个新的进程出来,就为他分配了一定的内存(不是所有进程共用同一个内存),但是这个内存不占用操作系统本身内存,也不受物理内存的限制,只有当进程运行时访问到某些内存没有对应物理内存时,操作系统才将信息加载到物理内存中。我的表达能力有限,可能会带有误导性,给个关键字:虚拟内存,搜索下。
方紫涵 2014-01-08
  • 打赏
  • 举报
回复
引用 1 楼 hnwyllmm 的回复:
每个进程起来用的内存都是虚的,不是有整个操作系统统一分配的,所以你的进程即使异常退出了,也不会影响整个OS的运行。其实也不存在进程的Heap区还给OS,因为他的Heap是专属进程的,进程结束了,也就没了,而且这个Heap不是从OS中的某部分内存分出来的
问下你这里的 不是有整个操作系统统一分配的 是不是“由”? 再就是能详细解释下这句话不 ?
方紫涵 2014-01-08
  • 打赏
  • 举报
回复
引用 1 楼 hnwyllmm 的回复:
每个进程起来用的内存都是虚的,不是有整个操作系统统一分配的,所以你的进程即使异常退出了,也不会影响整个OS的运行。其实也不存在进程的Heap区还给OS,因为他的Heap是专属进程的,进程结束了,也就没了,而且这个Heap不是从OS中的某部分内存分出来的
长知识了 big thanks
derekrose 2014-01-08
  • 打赏
  • 举报
回复
怕的就是你的进程不结束
lm_whales 2014-01-08
  • 打赏
  • 举报
回复
对于现在的操作系统而言是这样的; 不过比较老的就不是这样,所以当时内存泄露,是个很大的问题。
千树之影 2014-01-08
  • 打赏
  • 举报
回复
应该是对的。内存泄露只发生在在进程运行过程中
羽飞 2014-01-08
  • 打赏
  • 举报
回复
每个进程起来用的内存都是虚的,不是有整个操作系统统一分配的,所以你的进程即使异常退出了,也不会影响整个OS的运行。其实也不存在进程的Heap区还给OS,因为他的Heap是专属进程的,进程结束了,也就没了,而且这个Heap不是从OS中的某部分内存分出来的
羽飞 2014-01-08
  • 打赏
  • 举报
回复
引用 11 楼 xwhbwas2008 的回复:
[quote=引用 7 楼 hnwyllmm 的回复:] [quote=引用 6 楼 xwhbwas2008 的回复:] [quote=引用 1 楼 hnwyllmm 的回复:] 每个进程起来用的内存都是虚的,不是有整个操作系统统一分配的,所以你的进程即使异常退出了,也不会影响整个OS的运行。其实也不存在进程的Heap区还给OS,因为他的Heap是专属进程的,进程结束了,也就没了,而且这个Heap不是从OS中的某部分内存分出来的
问下你这里的 不是有整个操作系统统一分配的 是不是“由”? 再就是能详细解释下这句话不 ?[/quote] 是由,打错了不好意思。 我的意思是,每个进程都有自己专属的内存空间。当操作系统创建一个新的进程出来,就为他分配了一定的内存(不是所有进程共用同一个内存),但是这个内存不占用操作系统本身内存,也不受物理内存的限制,只有当进程运行时访问到某些内存没有对应物理内存时,操作系统才将信息加载到物理内存中。我的表达能力有限,可能会带有误导性,给个关键字:虚拟内存,搜索下。[/quote] 受教了。再请问下你这些知识是从哪里获取的?推荐本书或者资料 ? [/quote] 基本上每本操作系统的书都会介绍的,如果你是计算机专业或者相关专业,这门课也会开的
方紫涵 2014-01-08
  • 打赏
  • 举报
回复
引用 7 楼 hnwyllmm 的回复:
[quote=引用 6 楼 xwhbwas2008 的回复:] [quote=引用 1 楼 hnwyllmm 的回复:] 每个进程起来用的内存都是虚的,不是有整个操作系统统一分配的,所以你的进程即使异常退出了,也不会影响整个OS的运行。其实也不存在进程的Heap区还给OS,因为他的Heap是专属进程的,进程结束了,也就没了,而且这个Heap不是从OS中的某部分内存分出来的
问下你这里的 不是有整个操作系统统一分配的 是不是“由”? 再就是能详细解释下这句话不 ?[/quote] 是由,打错了不好意思。 我的意思是,每个进程都有自己专属的内存空间。当操作系统创建一个新的进程出来,就为他分配了一定的内存(不是所有进程共用同一个内存),但是这个内存不占用操作系统本身内存,也不受物理内存的限制,只有当进程运行时访问到某些内存没有对应物理内存时,操作系统才将信息加载到物理内存中。我的表达能力有限,可能会带有误导性,给个关键字:虚拟内存,搜索下。[/quote] 受教了。再请问下你这些知识是从哪里获取的?推荐本书或者资料 ?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧