zoukankan      html  css  js  c++  java
  • 进程结束后,进程的所有内存都将被释放,包括堆上的内存泄露的内存。

    进程结束后,进程的所有内存都将被释放,包括堆上的内存泄露的内存。原因是,当进程结束时,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

  • 相关阅读:
    iOS 数据持久化--CoreData
    iOS 数据持久化-- FMDB
    iOS数据持久化--数据库
    iOS数据持久化--归档
    iOS数据持久化--用户属性
    python爬坑记录
    Flutter 爬坑记录
    Web开发爬坑记录
    博客 新址: http://zhoushaoting.com/
    微信小程序开发技巧及填坑记录
  • 原文地址:https://www.cnblogs.com/zendu/p/4981515.html
Copyright © 2011-2022 走看看