C++ std::shared_ptr的使用

87 阅读1分钟

std::shared_ptr 是 C++ 标准库中的一个智能指针,它是一种高级指针,能够自动处理对象的生命周期,防止内存泄漏。std::shared_ptr 采用引用计数的方式来管理内存,当 std::shared_ptr 销毁时(例如离开作用域),它会自动减少引用计数,当引用计数为 0 时,它会自动删除所指向的对象。

std::shared_ptr 的主要用途是管理动态分配的内存,并自动管理对象的生命周期。它能够确保在不再需要对象时自动删除对象,防止内存泄漏。此外,std::shared_ptr 还可以用于实现共享所有权,即多个指针共享同一个对象,当最后一个引用该对象的 std::shared_ptr 销毁时,该对象也会被删除。

下面是一个简单的示例,展示如何使用 std::shared_ptr

#include <memory>

class MyClass {
public:
    MyClass() {}
    ~MyClass() {}
};

int main() {
    // 使用 std::make_shared 创建 MyClass 对象的 std::shared_ptr
    std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>();

    // 创建另一个指向同一对象的 std::shared_ptr
    std::shared_ptr<MyClass> ptr2 = ptr1;

    // 当 ptr1 和 ptr2 离开作用域时,对象会自动被删除
    return 0;
}

在这个例子中,我们使用 std::make_shared 创建了一个指向 MyClass 对象的 std::shared_ptr,然后通过复制构造函数创建了另一个指向同一对象的 std::shared_ptr。当 ptr1ptr2 离开作用域时,它们会自动减少引用计数,当引用计数为 0 时,会自动删除所指向的对象。