昨日私はunordered_mapを使用しようとしましたが、このコードは使用したメモリの量を混乱させました。std :: unordered_map非常に高いメモリ使用量
typedef list<string> entityId_list;
struct tile_content {
char cost;
entityId_list entities;
};
unordered_map<int, tile_content> hash_map;
for (size_t i = 0; i < 19200; i++) {
tile_content t;
t.cost = 1;
map[i] = t;
}
これらのコード部分はすべて、デバッグモードでMS VS2010でコンパイルされました。 私の仕事マネージャーで見たことは、約1200kbの "クリーン"プロセスでしたが、hash_mapを埋め込んだ後、8124kbのメモリを使用します。 unordered_mapの通常の動作ですか?なぜそんなに多くのメモリが使われたのですか
ちょうど順不同マップ(マップが無効になるイテレータを焼き直し場合ので、あなたはイテレータを経由して消去する場合)項目が内部に保存されていない場合でも、数百メガバイトまで保持できることに注意したい。このバグレポートを参照してください(ウィッヒは、などかもしれませんマイクロソフトの実装にはあまり影響しません): https://svn.boost.org/trac/boost/ticket/11419 – GameDeveloper