从std :: map中删除动态分配的内存

时间:2011-10-19 10:24:25

标签: c++ dynamic stdmap

我有一张地图std::map< string,A* > MyMap,这里A是一个类;它的对象是使用“new”创建的,并像这样插入到地图中,

MyMap["first"] = new A();
MyMap["second"] = new A();     // second step
MyMap["third"] = new A();

像这样,我每隔5秒就将动态创建的A对象插入到数组中。在某些时候我想释放使用“new”创建的内存我不想删除所有项目。我想从地图中释放少量物品。是否有可能只删除特定项目占用的内存? (例如,我想只删除在第二步中创建的A对象所占用的空间。

1 个答案:

答案 0 :(得分:1)

当然。首先,获取要删除的对象的指针或引用。然后,使用map.erase()将其从地图中取出。现在,该对象仅包含您的指针或引用,因此您可以使用delete释放其内存。