您的位置:首页 > 其它

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

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

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

[c-sharp] view plaincopy

#include <cstdlib>

using namespace std;

const static int const_once = 1024*1024*2;

int _tmain(int argc, _TCHAR* argv[])

{

int *a;

for(int cnt=0;cnt<=10;cnt++)

{

a = new int[const_once];

a[10] = 1;

a[const_once-10] = 1;

}

system("pause");

exit(0);

return 0;

}

运行结果:

在pause时:



之后:



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

转自:http://blog.csdn.net/x50573750/article/details/6171604
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: