次の 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;
}
デバッグモード(VS2008)で実行します:行にブレークポイントを設定したとき
//main function
int i = 0;
Process MyProgram.exe が Windows タスク マネージャーで約 300KB のメモリを占有していることがわかりました。行にブレーク ポイントを設定すると、
return 0;
Process MyProgram.exe は、Windows タスク マネージャーで約 700 KB を占有します。
私の質問は、なぜプログラムが占有するメモリが増加したのですか?正確にメモリを解放したと思います~なぜですか?