我需要帮助了解我在 Windows 上的内存分配和释放问题。我目前正在使用最新更新的 VS11 编译器(VS2012 IDE)(更新 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;
}