我需要帮助了解Windows上的内存分配和释放问题.我正在使用最新更新的VS11编译器(VS2012 IDE)(Update 3 RC).
问题是:我为二维数组动态分配一些内存并立即解除分配.仍然,在内存分配之前,我的进程内存使用量在分配前为0.3 MB,在分配时为259,6 MB(预期分配了32768个64位整数阵列(8字节)),分配期间为4106,8 MB,但在释放后内存不会下降到预期的0.3 MB,但仍然停留在12,7 MB.由于我正在释放我已经占用的所有堆内存,我预计内存将回到0.3 MB.
这是我正在使用的C++代码:
#include <iostream>
#define SIZE 32768
int main( int argc, char* argv[] ) {
std::getchar();
int ** p_p_dynamic2d = new int*[SIZE];
for(int i=0; i<SIZE; i++){
p_p_dynamic2d[i] = new int[SIZE];
}
std::getchar();
for(int i=0; i<SIZE; i++){
for(int j=0; j<SIZE; j++){
p_p_dynamic2d[i][j] = j+i;
}
}
std::getchar();
for(int i=0; i<SIZE; i++) {
delete [] p_p_dynamic2d[i];
}
delete [] p_p_dynamic2d;
std::getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)