c++ - 如果映射包含指针,如何清除映射中的内存?

标签 c++ memory-management data-structures

考虑

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

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

最佳答案

这里的问题是原始指针不传达有关所有权的信息,即谁负责清理节点。该 map 是节点的所有者吗?然后您需要删除这些对象。或者更好的是,您使用 unique_ptr 而不是原始指针。但如果 map 不是节点的所有者,则不得删除节点。

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

关于c++ - 如果映射包含指针,如何清除映射中的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51374142/

相关文章:

c - 指针类型转换如何在 C 中工作

windows - MmMapIoSpace 的魔数(Magic Number)

algorithm - 范围内整数的乘法

python - 在 O(logn) 中添加、删除和插入元素

python - 谷歌云 ML 引擎中的 Tensorflow 新操作

c++ - 我可以在不创建临时变量的情况下从初始化直接返回结构吗?

c++ - OpenMP - 通过单个线程访问单个文件

objective-c - 为什么在 Objective-C 中一个人会自动释放自己的属性(property)?

c++ - 使用数据结构的日历和待办事项列表

c# - 在 C# 中处理 C++ 结构