【发布时间】:2019-10-19 22:59:56
【问题描述】:
再次阅读 C++ Primer 5 Edition。我在第 12 章动态记忆。一切都好。直到本书的这一点:
“因为在最后一个 shared_ptr 消失之前不会释放内存,因此确保 shared_ptr 在不再需要它们后不会留下来很重要。程序将正确执行,但如果你忽略了可能会浪费内存销毁程序不需要的 shared_ptrs。shared_ptrs 在你需要它们之后可能会保留的一种方法是,如果你将 shared_ptrs 放在一个容器中,然后重新排序容器,这样你就不需要所有元素。你应该确保删除shared_ptr 元素,一旦您不再需要这些元素。
注意
如果您将 shared_ptrs 放入容器中,并且随后需要使用部分但不是全部元素,请记住删除不再需要的元素。”
- 我不明白这一段,谁能给我解释一下
shared_ptrs 怎么会泄露?以及可能导致泄漏的 shared_ptr 的“容器”示例。谢谢。
【问题讨论】:
-
听起来类似于 C++ 的“erase-remove”习语,因为
std::remove实际上并没有删除元素,它只是重新组织它们
标签: c++11 containers shared-ptr