我有一个结构

typedef struct {
  unsigned ccc;
  unsigned ddd;
  unsigned aaa;
  unsigned bbb;
  string ddd;

} objinfo;


在我的代码中涉及以下几个方面:

objinfo obj_tmp
multimap<string, objinfo> obj_map;
multimap<string, objininfo>::iterator it;
std::pair<multimap<string, objinfo>::iterator, multimap<string,objinfo>::iterator> Krange;


每个循环中,我将需要抛出旧的objinfo,obj_map并替换新的对象信息。
我可以做obj_map.clear()来清洁地图。

我还应该怎么做才能释放与旧对象的结构,指针和映射有关的内存
每个循环之后?

最佳答案

调用multimap::clear()时,它将调用多重映射中每个元素的析构函数。因此,只要您的元素不是指针,您的对象将被销毁并且它们的内存将被释放。如果确实有指针作为多图中的元素,则在调用delete之前,需要在每个项目上调用multimap::clear()。 (假设您是对象的所有者)。

10-05 21:10
查看更多