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

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

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

2、不管用户程序怎么malloc,在进程结束的时候,其虚拟地址空间就会被直接销毁,操作系统只需要在进程结束的时候让内存管理模块把分页文件中与此进程相关的记录全部删除,标记为“可用空间”,就可以使所有申请的内存都一次性地回收,根本没有什么麻烦.简单说,malloc 的分配都是假的,malloc 的请求系统都知道,程序退出时,系统会回收malloc 的所有资源。但是,有些内存系统是回收不了的。例如运行于内核级的驱动造成的内存错误等, 这些是系统所管不了的。这种错误,重启程序是没有效果的。必须重启电脑才能解决。

举例:

#include

const static int const_once = 1024 * 1024 * 10;

int main()

{

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);

while (1)

{

switch (getchar())

{

case '1': //按了键盘上的1

break;

case '2':

break;

case '3':

break;

case '4':

break;

case '\n': //按了回车

exit(0);

default:

printf("错误输入!");

getchar();

}

}

return 0;

}使用Windows任务管理器,观察内存的变化。

相关推荐

搜索从凤凰城到纽约的航班
mobile365官网是多少

搜索从凤凰城到纽约的航班

📅 07-24 👁️ 1297
蝙蝠怕什么(蝙蝠怕什么气味和东西)
mobile365官网是多少

蝙蝠怕什么(蝙蝠怕什么气味和东西)

📅 07-22 👁️ 7952
什么是发酵醪,发酵醪的定义及用途
365bet官网提现说维护

什么是发酵醪,发酵醪的定义及用途

📅 06-29 👁️ 2057