首页 > 解决方案 > 如果地图中包含指针,如何清除内存?

问题描述

考虑

map <char,node*> mp; 其中节点是一个类

如果我们使用mp.clear();then 是否需要显式释放内存?

标签: c++memory-managementdata-structures

解决方案


这里的问题是原始指针没有传达有关所有权的信息,即谁负责清理节点。这张地图是节点的所有者吗?然后你需要删除对象。或者更好的是,您使用unique_ptr而不是原始指针。但是如果地图不是节点的所有者,那么你不能删除节点。

底线是理解所有权的概念并使用适当的智能指针。


推荐阅读