我的问题涉及内存管理。
我得到了这个容器:
typedef hash_map<const string, Powerdomain*, strptrhash, strptrequal> PowerdomainHashMap;
现在我在其中添加一个元素
PowerdomainHashMap powerdomainMap;
Powerdomain* pd1=new Powerdomain("Powerdomain1");
powerdomainMap.insert(Powerdomain_pair(pd1->getName(),pd1));
之后,我的程序执行了第一步。
现在第一步已经完成,我不再需要powerdomain并想要删除它们。
powerdomainMap.clear()
是否足够?它会销毁 map 中的所有值条目吗(即, map 中每个Powerdomain *上的delete调用?(我认为这比在 map 上的迭代器上调用delete更好,但我不确定)
最佳答案
不。您已经手动获取了内存(使用new
),您需要手动释放了内存(使用delete
)。最好使用智能指针而不是原始指针(最好是std::shared_ptr
)。
关于c++ - hash_map值删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6251373/