我正在使用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)分配大约1GB的内存,因此我非常希望在它耗尽所有内存之前将其返回到我的系统中。我也遇到了std::vector的同样情况,但是我可以通过与空的std::vector进行交换来强制释放它。但这在map中不起作用。当我使用valgrind时,它显示所有内存都已被释放,因此这不是泄漏的问题,因为运行后所有内容都已清除干净。编辑:清除后必须出现flush。