Я использую std:: map, и я не могу освободить память обратно в ОС. Похоже,
int main(){
aMap m;
while(keepGoing){
while(fillUpMap){
//populate m
}
doWhatIwantWithMap(m);
m.clear();//doesnt free memory back to OS
//flush some buffered values into map for next iteration
flushIntoMap(m);
}
}
Каждый (fillUpmap) выделяет около 1gig, поэтому я очень заинтересован в том, чтобы вернуть его в свою систему, прежде чем он поглотит всю мою память.
Ive испытал то же самое с std::vector, но там я мог заставить его освободиться, выполнив обмен с пустым std::vector. Это не работает с картой.
Когда я использую valgrind, он говорит, что вся память освобождена, поэтому это не проблема с утечкой, так как после прогона все хорошо очищается.
изменить:
Сброс должен появиться после очистки.