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

新手上路,请多包涵

我有一张地图,现在我想完全删除内存。我该怎么做?找不到与此主题相关的任何内容,抱歉,如果已经回答…

我的代码是这样的:

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

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

问候,菲尔

原文由 skylla 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 734
1 个回答

正确做事的方法是不去做。 A map 将在销毁任何自动分配的资源时自动释放资源。

除非您使用 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];
}

原文由 Luchian Grigore 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题