我有一个map<long,myClass *> myMap;
myMap的元素是动态分配的:
myMap[1] = new myClass();
我想删除分配给myMap元素的所有内存。
可以使用myMap.erase(myMap.begin(),myMap.end());

最佳答案

您必须先删除所有那些动态分配的元素,否则可能会泄漏内存。

for (std::map<long,myClass *>::iterator iter = myMap.begin();
     iter != myMap.end(); ++iter)
{
   delete (*iter).second;
}

myMap.clear();


更好的方法是改为使用智能指针:

std::map<long, std::shared_ptr<myClass> > myMap;
std::shared_ptr<myClass> p(new myClass());
myMap[1] = p;
myMap.clear();  // no need to call delete manually anymore, clear is enough

关于c++ - 删除标准库图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14181216/

10-13 08:24