我有一张地图,现在我想完全删除内存。我该怎么做?找不到这个主题的任何内容,对不起,如果已经回答了......
我的代码是这样的:
for(std::map<short,std::string>::iterator ii=map.begin();
ii!=map.end(); ++ii)
{
delete ⅈ
}
但它不起作用。有人可以帮忙吗?
的问候, 菲尔
答案 0 :(得分:10)
正确行事的方法不是这样做。 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];
}
答案 1 :(得分:7)
只需致电map.clear();
即可。这将释放地图在内部分配的所有对象。
请注意,在任务管理器等系统工具中,您的应用程序仍然可以显示相同的内存量。操作系统决定不再回收您的进程曾经保存的内存,以防再次分配它。如果它开始不足,它会在以后收回它。