shared_ptr和weak_ptr 共用例程
时间: 2024-04-19 21:20:47 浏览: 18
shared_ptr和weak_ptr是C++中的智能指针,用于管理动态分配的内存资源,避免内存泄漏和悬空指针的问题。
1. shared_ptr:
shared_ptr是一种引用计数智能指针,可以跟踪有多少个shared_ptr共享同一个对象。当最后一个shared_ptr离开作用域或被显式释放时,它会自动删除所管理的对象。shared_ptr的特点包括:
- 可以通过make_shared函数创建,也可以通过new关键字和构造函数创建。
- 可以通过shared_ptr的拷贝构造函数和赋值运算符进行拷贝和赋值,引用计数会增加。
- 可以使用use_count()函数获取当前有多少个shared_ptr共享同一个对象。
- 可以使用unique()函数判断当前是否只有一个shared_ptr指向对象。
- 可以使用reset()函数显式释放shared_ptr所管理的对象。
2. weak_ptr:
weak_ptr是一种弱引用智能指针,它可以解决shared_ptr的循环引用问题。weak_ptr可以与shared_ptr共享同一个对象,但不会增加引用计数。当最后一个shared_ptr离开作用域或被显式释放时,即使还有weak_ptr指向对象,对象也会被销毁。weak_ptr的特点包括:
- 不能直接通过new关键字和构造函数创建,只能通过shared_ptr的weak_ptr构造函数或lock()函数创建。
- 可以使用expired()函数判断所指向的对象是否已经被销毁。
- 可以使用lock()函数获取一个shared_ptr,如果对象已经被销毁,则返回一个空的shared_ptr。