如何释放结构的内存,循环的每次迭代的指针

时间:2013-05-17 18:31:27

标签: c++ pointers memory-management struct

我有一个结构

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()来清理地图。

我还应该做些什么来释放与旧对象的结构,指针和地图相关的内存 每次循环后?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

根据您共享的代码,看起来您需要做的就是让对象超出范围。他们的析构函数将自动运行并为您清理所有内容。所以,基本上,你不需要做任何事情。 : - )

我这样说是因为我看不到手动创建需要相应手动删除的对象(例如,没有newmalloc)。