我有一个结构
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()来清理地图。
我还应该做些什么来释放与旧对象的结构,指针和地图相关的内存 每次循环后?
答案 0 :(得分:2)
当你调用multimap::clear()
时,它将调用multimap中每个元素的析构函数。因此,只要您的元素不是指针,您的对象就会被销毁,并且它们的内存将被释放。如果您在多地图中有指针作为元素,则在致电delete
之前,您需要在每个项目上调用multimap::clear()
。 (假设您是该对象的所有者)。
答案 1 :(得分:0)
根据您共享的代码,看起来您需要做的就是让对象超出范围。他们的析构函数将自动运行并为您清理所有内容。所以,基本上,你不需要做任何事情。 : - )
我这样说是因为我看不到手动创建需要相应手动删除的对象(例如,没有new
或malloc
)。