std::make_shared 是 C++11 中引入的一个函数,用于创建一个指向动态分配的对象的 std::shared_ptr 智能指针。它是一种使用更高效、更安全的内存管理方式,相比于直接使用 new 创建 std::shared_ptr,std::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 被销毁时,它所指向的对象也会被自动删除,这是一种自动资源管理的模式,可以避免手动管理内存带来的错误。