어제 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의 정상적인 동작입니까? 왜 그렇게 많은 메모리가 사용 되었습니까?
는 그냥 순서가없는 맵이 항목이이 버그 보고서를 참조하십시오 ((지도 반복자가 무효가 재탕하는 경우 때문에, 반복자를 통해 지울 때) 느릅 나무는 5 월 안에 저장되지도 수백 메가 바이트까지 저장할 수 있습니다 싶어 잘 마이크로 소프트 구현에 영향을주지 않습니다) : https://svn.boost.org/trac/boost/ticket/11419 – GameDeveloper