读书人

delete剔除变量后任务管理器中不能看

发布时间: 2012-07-28 12:25:13 作者: rapoo

delete删除变量后,任务管理器中不能看到内存被释放?
#include <iostream>
#include <windows.h>

using namespace std;


int main()
{
int *pi[200];
Sleep(2000);

// 申请200个int型的变量
for(int i = 0; i < 200; i++)
{
cout << i << endl;
pi[i] = new int;
Sleep(100);
}

// 依次删除这200个int型变量
for(i = 0; i < 200; i++)
{
cout << i << endl;
delete pi[i];
pi[i] = NULL;
Sleep(100);
}
return 0;
}

我测试了一下,对前面一个for语句,申请200个变量的时候,在任务管理器中内存占用会逐步增加,
而对于后一个for语句,任务管理器中的内存却不变,为什么???


[解决办法]
通常不能.
一般都做缓存,你下次申请的时候就不需要从系统那里分配内存了,直接给你删除的用.
[解决办法]
任务管理器中看的是你整个进程用的总内存,这个总内存中有很多一部分是已经分配好了等你new的,这部分在任务管理器中是使用中而你进程的角度看是未使用的,所以用任务管理器看这个本来就不对

[解决办法]
delete应该只会告诉程序这块内存不用了,程序可以重新分配给其他变量用,但并没有返还给系统
[解决办法]
试试这个,每次申请4K字节:

C/C++ code
int main() { int *pi[200]; Sleep(2000); // 申请200个int型的变量 for(int i = 0; i < 200; i++) { cout <<i<< endl; pi[i] = new int[1024]; Sleep(100); } // 依次删除这200个int型变量 for(i = 0; i < 200; i++) { cout << i << endl; delete pi[i]; pi[i] = NULL; Sleep(100); } return 0; } 

读书人网 >C++

热点推荐