C++ std::make_shared的使用

1,526 阅读1分钟

std::make_shared 是 C++11 中引入的一个函数,用于创建一个指向动态分配的对象的 std::shared_ptr 智能指针。它是一种使用更高效、更安全的内存管理方式,相比于直接使用 new 创建 std::shared_ptrstd::make_shared 在创建智能指针时只进行一次动态内存分配,而 new 操作可能会进行两次(一次分配对象,一次分配 std::shared_ptr)。

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

#include <memory>

class MyClass {
public:
    MyClass(int value) : m_value(value) {}
    ~MyClass() {}

private:
    int m_value;
};

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

    // 使用 std::shared_ptr 调用 MyClass 的成员函数
    ptr->m_value = 50;

    // 当 std::shared_ptr 被销毁时,它所指向的对象也会被自动删除
    return 0;
}

在这个例子中,我们使用 std::make_shared<MyClass>(42) 创建了一个指向 MyClass 对象的 std::shared_ptr,然后通过这个智能指针访问对象的成员变量并调用成员函数。当 std::shared_ptr 被销毁时,它所指向的对象也会被自动删除,这是一种自动资源管理的模式,可以避免手动管理内存带来的错误。