我的问题涉及内存管理。

我得到了这个容器:

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/

10-10 02:55