嘎嘎:10行语句的小程序,内存泄漏的问题,高手先生请来看=>
#include <iostream.h>
#include <new>
void MemOutErr();
main() {
while(true) {
int * temp = new(MemOutErr) int[10000000]; //【语句一】
//int * temp = new int[10000000]; //【语句二】
}
}
void MemOutErr() {
cout << "Memory is out>:)" << endl;
}
问题1:
症状1——注释【语句一】使【语句二】生效,结果win2000的任务管理器上显示内存一直升高知道报告我虚拟内存不足程序,但是程序并不跳出;
症状2——注释【语句二】使【语句一】生效,结果win2000的任务管理器上显示内存没有什么变化,而且程序也并不跳出,MemOutErr()也没有被执行到。
这是为什么?
问题2:以前听某某谁说过,内存泄漏部分的资源,系统就再也无法回收,除非你Reboot操作系统,好像不对吧,症状1的描述中,我把程序关闭掉之后,管理器上显示内存占用数量就回复到运行前的状态了,哪位能为我解释一下这种现象。
谢谢啦!