完全删除std :: map <int,string>的内存

sky*_*lla 6 c++ free stl map

我有一张地图,现在我想完全删除内存.我该怎么做?找不到任何针对这个主题的内容,对不起,如果已经回答了......

我的代码是这样的:

      for(std::map<short,std::string>::iterator ii=map.begin();   
ii!=map.end(); ++ii)
    {
        delete &ii;
    }
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有人可以帮忙吗?

问候,菲尔

Luc*_*ore 10

做正确的方法不是这样做.map当自动分配的任何内容被销毁时,A 会自动释放资源.

除非你分配了值,否则你new不会delete.

{
    std::map<short,std::string> x;
    x[0] = "str";
}
//no leaks here

{
    std::map<short,std::string*> x;
    x[0] = new std::string;  
    delete x[0];
}
Run Code Online (Sandbox Code Playgroud)

  • @ user1971024然后泄漏来自其他地方,或者根本没有泄漏. (2认同)

Rei*_*ica 7

只需致电map.clear();.这将释放地图在内部分配的所有对象.

请注意,在任务管理器等系统工具中,您的应用程序仍然可以显示相同的内存量.操作系统决定不再回收您的进程曾经保存的内存,以防再次分配它.如果它开始不足,它会在以后收回它.