我有一张地图,现在我想完全删除内存。我该怎么做?找不到与此主题相关的任何内容,抱歉,如果已经回答...
我的代码是这样的:
for(std::map<short,std::string>::iterator ii=map.begin();
ii!=map.end(); ++ii)
{
delete ⅈ
}
但它不起作用。有人可以帮忙吗?
问候,菲尔
正确做事的方法是不去做。Amap
将在销毁任何自动分配的资源时自动释放资源。
除非您使用 分配值,否则您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];
}
只需调用map.clear();
. 这将释放地图内部分配的所有对象。
请注意,在任务管理器等系统工具中,您的应用程序仍然可以显示相同数量的内存占用。操作系统完全有可能决定不回收您的进程曾经持有的内存,以防它再次分配它。如果它开始短缺,它将在以后收回它。
if(m_mapModels.size() > 0)
{
for(map<short,std::string>::iterator it=m_mapModels.begin() ; it!=m_mapModels.end() ; it++)
{
delete it->second;
}
m_mapModels.clear();
}