相关疑难解决方法(0)

如何强制我的std :: map释放使用的内存?

我正在使用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时它表示所有内存都被释放,所以它不是泄漏的问题,因为一切都在运行后很好地清除了.

编辑:

清除后必须出现冲洗.

c++ memory stl vector map

11
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

map ×1

memory ×1

stl ×1

vector ×1