【发布时间】:2015-04-05 09:01:50
【问题描述】:
我正在使用 Visual Studio 2013 用 C++ 编写。我注意到以下简单代码存在异常(发现 here):
const int HEIGHT = 1000;
const int WIDTH = 100000;
double **p2DArray;
// Allocate memory
p2DArray = new double*[HEIGHT];
for (int i = 0; i < HEIGHT; ++i)
p2DArray[i] = new double[WIDTH];
// De-Allocate memory to prevent memory leak
for (int i = 0; i < HEIGHT; ++i)
delete[] p2DArray[i];
delete[] p2DArray;
return 0;
当我在“return 0”上设置断点时,使用 Windows 的任务管理器,我可以看到应用程序的“内存”占用空间为 0.3 MB。但是,如果我用“float”或“int”替换“double”,我会得到“31.3 MB”。此外,通过修改 HEIGHT/WIDTH,我得到了 int 和 float 的不同 MB 数,而 double 的数字保持不变 - 0.3 MB .有人能解释一下吗?
谢谢。
附:由于库函数,我需要使用原始指针。
【问题讨论】:
-
delete和朋友释放内存给C++运行时;然后运行时是否将内存释放回操作系统,导致您在任务管理器中看到的内存数量减少,这取决于它。
标签: c++