std::weak_ptr
来自cppreference.com
在标头 <memory> 定义
|
||
template< class T > class weak_ptr; |
(C++11 起) | |
std::weak_ptr
是一种智能指针,它持有被 std::shared_ptr 管理的对象的非拥有性「弱」引用。在访问引用的对象前必须先转换为 std::shared_ptr。
std::weak_ptr
实现临时所有权:当某个对象只有存在时才需要被访问,且随时可能被他人删除时,可以使用 std::weak_ptr
来跟踪该对象,需要获得临时所有权时,将其转换为 std::shared_ptr。如果此时销毁了原始 std::shared_ptr,则对象的生命周期将被延长,直到临时 std::shared_ptr 也被销毁为止。
std::weak_ptr
的另一用法是打断被 std::shared_ptr 管理的对象组成的环状引用。若这种环被孤立(例如无指向环中的外部共享指针),则 shared_ptr
引用计数无法抵达零,而内存被泄露。可通过令环中的指针之一为弱指针来避免这种情况。
目录 |