文章目录
C++ std::shared_ptr 与 std::weak_ptr 详解
std::shared_ptr
std::shared_ptr 是 C++11 引入的智能指针之一,用于管理动态分配的对象的生命周期。它通过引用计数来管理对象的内存,当最后一个 std::shared_ptr 指向的对象被销毁时,自动释放内存
基本概念
• 引用计数:std::shared_ptr 内部维护一个引用计数器,记录有多少个 std::shared_ptr 实例共享同一个对象。当一个新的 std::shared_ptr 被复制时,引用计数增加;当一个 std::shared_ptr 被销毁时,引用计数减少。当引用计数变为零时,所管理的对象会被自动删除。
• 线程安全:std::shared_ptr 的引用计数操作是线程安全的,但对象的其他操作需要用户自己保证线程安全。
使用方法
- 创建 std::shared_ptr
#include <memory>
#include <iostream>
class MyClass {
public:
MyClass() {
std::cout << "MyClass Constructor" << std::endl; }
~MyClass() {
std::cout << "MyClass Destructor" << std::endl; }
};
int main() {
std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>(); // 推荐的创建方式
{
std::shared_ptr<MyClass> ptr2 = ptr1; // 引用计数增加
std::