std::deque を使用したかったのですが、消費されるオーバーヘッド メモリが大きすぎるようです。私は何か間違ったことをしていますか?
#include "windows.h"
#include "psapi.h"
#include <iostream>
#include <vector>
#include <queue>
int main (int, char* [])
{
PROCESS_MEMORY_COUNTERS pm;
GetProcessMemoryInfo(GetCurrentProcess(), &pm, sizeof(pm));
size_t mem1 = pm.WorkingSetSize;
std::vector<int> v( 10000000 );
GetProcessMemoryInfo(GetCurrentProcess(), &pm, sizeof(pm));
size_t mem2 = pm.WorkingSetSize;
std::deque<int> q( 10000000 );
GetProcessMemoryInfo(GetCurrentProcess(), &pm, sizeof(pm));
size_t mem3 = pm.WorkingSetSize;
std::cout << mem2 - mem1 << std::endl;
std::cout << mem3 - mem2 << std::endl;
return 0;
}
出力 (32 ビット Windows システム):
40087552
72564736
おまけの質問: mem2 - mem1 が正確に 40000000 でないのはなぜですか?