小编use*_*906的帖子

C++ delete不释放所有内存(Windows)

我需要帮助了解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)

c++ memory-leaks memory-management heap-memory visual-c++

6
推荐指数
1
解决办法
3323
查看次数