0

我有一个结构

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

在每个循环之后,我还应该做些什么来释放与旧对象的结构、指针和映射相关的内存?

4

2 回答 2

2

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

于 2013-05-17T18:40:46.733 回答
0

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

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

于 2013-05-17T18:39:27.883 回答