C++ 为什么当我们有shared_ptr use_count()时还需要weak_ptr?

问题描述 投票:0回答:1

问一个愚蠢的问题。据我了解,weak_ptr 的一种用法是检查对象上共享指针的计数状态。我们不能只使用shared_ptr use_count() 来获取此信息吗?如果是这样为什么需要weak_ptr?

c++ memory-management c++20 shared-ptr weak-ptr
1个回答
0
投票

不,不,我们不能。

weak_ptr
的想法是我们想要引用某些东西,但我们自己不想让它保持活力;那就是当强引用消失时,对象也消失了;当我们解析弱指针时,我们会得到一个空值。

weak_ptr
的一个例子可能是二叉树;假设每个节点都需要对其父节点的引用。如果您使用
shared_ptr
来引用父节点,则会出现导致内存泄漏的循环,但父节点上的
weak_ptr
不会。

弱指针还有其他用途,您可以从与其实际生命周期无关的位置引用某个大对象;但构建一个易于理解的小示例并不简单。

© www.soinside.com 2019 - 2024. All rights reserved.