【发布时间】:2013-06-05 04:22:06
【问题描述】:
我需要帮助了解我在 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;
}
【问题讨论】:
-
你是如何决定内存没有被释放的?如果你使用任务管理器,你会得到一个错误的图片。如果在调试中运行,是否会报告内存泄漏?
-
不,罗杰,我使用的是 TM。谢谢。
标签: c++ visual-c++ memory-management memory-leaks heap-memory