Вчера я пытался использовать 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 в режиме отладки.
В моем диспетчере задач я видел около 1200 КБ "чистого" процесса, но после заполнения hash_map
он использует 8124 КБ памяти. Это нормальное поведение unordered_map
? Почему используется так много памяти?