码迷,mamicode.com
首页 > 系统相关 > 详细

进程结束后,进程的所有内存都将被释放,包括堆上的内存泄露的内存。

时间:2015-11-20 19:57:40      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

进程结束后,进程的所有内存都将被释放,包括堆上的内存泄露的内存。原因是,当进程结束时,GDT、LDT和页目录都被操作系统更改,逻辑内存全部消失,可能物理内存的内容还在但是逻辑内存已经从LDT和GDT删除,页目录表全部销毁,所以内存会被全部收回。

 

一下这段代码,我个人认为可以作为例证,不对请多指教:

[c-sharp] view plaincopy
 
  1. #include <cstdlib>  
  2. using namespace std;  
  3. const static int const_once = 1024*1024*2;  
  4. int _tmain(int argc, _TCHAR* argv[])  
  5. {  
  6.     int *a;  
  7.     for(int cnt=0;cnt<=10;cnt++)  
  8.     {  
  9.         a = new int[const_once];  
  10.         a[10] = 1;  
  11.         a[const_once-10] = 1;  
  12.     }  
  13.     system("pause");  
  14.     exit(0);  
  15.     return 0;  
  16. }  

 

 

运行结果:

在pause时:

 

技术分享

 

之后:

 

技术分享

 

我这程序怎么的也不会占几百兆内存吧,可以反复尝试多次,有些人总说内存泄露直到从新启动才被回收,我想这是DOS时代吧,DOS没什么分页分段虚存这些管理,所以才会一直泄露吧。

 

转自:http://blog.csdn.net/x50573750/article/details/6171604

进程结束后,进程的所有内存都将被释放,包括堆上的内存泄露的内存。

标签:

原文地址:http://www.cnblogs.com/zendu/p/4981515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!