我正在使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
每个(fillUpmap)分配大约1gig,所以我非常有兴趣在它耗尽我的所有记忆之前将它恢复到我的系统.
我经历过与std :: vector相同的事情,但是我可以通过与空std :: vector交换来强制它释放.这不适用于地图.
当我使用valgrind时它表示所有内存都被释放,所以它不是泄漏的问题,因为一切都在运行后很好地清除了.
编辑:
清除后必须出现冲洗.