c++ - 如果地图中包含指针,如何清除内存?
问题描述
考虑
map <char,node*> mp;
其中节点是一个类
如果我们使用mp.clear();
then 是否需要显式释放内存?
解决方案
这里的问题是原始指针没有传达有关所有权的信息,即谁负责清理节点。这张地图是节点的所有者吗?然后你需要删除对象。或者更好的是,您使用unique_ptr
而不是原始指针。但是如果地图不是节点的所有者,那么你不能删除节点。
底线是理解所有权的概念并使用适当的智能指针。
推荐阅读
- c - 为什么 c = 4 而不是 1 的结构中字符和 int 的地址不同
- typescript - Ramda 和 Typescript:添加缺失的类型
- ios - 具有动态内容的垂直和水平分页
- php - 使用 PHP 的 google recpatcha 问题
- c++ - 定义一个长度等于 vector::size() 的数组
- hibernate - 如何使用带有 Spring MVC 表单标签的 bootstrap-select
- javascript - 将数组数组转换为对象数组的有效方法
- ssh-tunnel - 无法通过隧道连接到 Deck
- angular - 我想使用反应形式和角度材料一次显示一个错误
- android - 获取数据绑定以观察对回收站视图的实时数据的更改