弱指针(Weak Pointer)是 C++11 引入的一种智能指针,用于解决 std::shared_ptr 可能引发的循环引用问题。
与 std::shared_ptr 不同的是,弱指针并不增加引用计数,因此不会影响对象的生命周期。
主要特点和用途
不增加引用计数
弱指针不会增加所指向对象的引用计数。
当最后一个强引用(std::shared_ptr)销毁时,无论弱指针是否存在,引用计数都会减少。
不影响对象生命周期
弱指针不会影响所指向对象的生命周期。
当对象被销毁后,弱指针会被自动置空,不再指向任何对象。
用于解决循环引用
当两个或多个对象相互持有对方的 std::shared_ptr,可能形成循环引用,导致对象无法正确释放。
使用弱指针可以打破循环引用,防止内存泄漏。
使用示例
#include
#include
class MyClass;
int main() {
std::shared_ptr ptr1 = std::make_shared();
std::weak_ptr weakPtr = ptr1;
// 使用弱指针获取共享指针
if (auto sharedPtr = weakPtr.lock()) {
std::cout