我有一个结构
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()
。 (假设您是对象的所有者)。