请看下面的 C++ 代码:
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
class Buf
{
public:
Buf(size_t size)
{
_storage.reserve(size);
}
~Buf()
{
vector<int> temp;
_storage.swap( temp );//release memory
}
vector<int> _storage;
};
int main()
{
int i = 0;
while( ++i < 10000)
{
Buf *buf = new Buf(100000);
delete buf;
}
return 0;
}
我在 Debug模式下运行它(VS2008):当我在行中设置一个断点时
//main function
int i = 0;
我在Windows任务管理器中发现Process MyProgram.exe占用了大约300KB的内存。当我在该行设置断点时
return 0;
进程 MyProgram.exe 在 Windows 任务管理器中占用大约 700KB。
我的问题是:为什么程序占用的内存增加了?我想我正好释放了内存~为什么?
最佳答案
标准内存分配器不会(通常)在您释放内存时将内存释放给操作系统。相反,它会保留它用于您流程的后续分配。
因此,即使您解除分配,您也看不到 TM 中的内存使用量减少。
关于c++ - C++(VS2008)中的内存释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359738/