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。当 ptr1 和 ptr2 离开作用域时,它们会自动减少引用计数,当引用计数为 0 时,会自动删除所指向的对象。