std::make_shared的功能
时间: 2023-10-24 15:26:32 浏览: 88
std::make_shared 是 C++11 引入的一个模板函数,用于创建一个指向动态分配的对象的 std::shared_ptr。
它的功能是在动态内存中分配一个对象,并返回一个指向该对象的 std::shared_ptr 智能指针。使用 std::make_shared 可以简化手动调用 new 并手动创建 std::shared_ptr 的过程。
下面是使用 std::make_shared 创建对象的示例代码:
```
#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> ptr = std::make_shared<MyClass>();
// 使用 ptr 指向的对象
return 0;
}
```
在上述代码中,std::make_shared<MyClass>() 创建了一个 MyClass 类型的对象,并返回一个指向该对象的 std::shared_ptr。这样,我们就可以通过 ptr 智能指针来管理该对象的生命周期,无需手动释放内存。
使用 std::make_shared 创建对象有以下几个优点:
1. 减少内存分配和引用计数开销,因为它会一次性分配内存并同时创建引用计数。
2. 更简洁的语法,无需显式调用 new 和手动创建 std::shared_ptr。
3. 避免了潜在的资源泄漏,因为 std::make_shared 在分配内存和创建引用计数时使用了原子操作,保证了异常安全性。
总之,std::make_shared 提供了一个方便且安全的方式来创建 std::shared_ptr 智能指针并管理动态分配的对象。
阅读全文