c++make_shared和shared_ptr
时间: 2023-10-17 09:27:10 浏览: 95
C++ unique_ptr weak_ptr shared_ptr auto_ptr智能指针.doc
5星 · 资源好评率100%
C++中的`std::make_shared`和`std::shared_ptr`都是智能指针的一部分,用于管理动态分配的内存。它们提供了一种方便、安全且自动化的方式来管理资源的生命周期。
`std::make_shared`是一个模板函数,用于创建一个指定类型的`std::shared_ptr`对象,并将其与一个新分配的对象关联起来。它接受构造函数的参数,并使用这些参数在堆上分配内存来创建对象。使用`std::make_shared`可以减少内存分配的开销,并且可以更加简洁地创建智能指针。
下面是使用`std::make_shared`创建`std::shared_ptr`的示例:
```cpp
auto ptr = std::make_shared<int>(42);
```
上述代码将创建一个指向整数值为42的`std::shared_ptr`对象。
`std::shared_ptr`是一种智能指针,用于管理共享所有权的对象。它跟踪指向动态分配内存的指针,并在不再需要时自动释放该内存。它使用引用计数来确定内存是否可以被释放。
下面是一个使用`std::shared_ptr`的示例:
```cpp
std::shared_ptr<int> ptr(new int(42));
```
上述代码将创建一个指向整数值为42的`std::shared_ptr`对象。
需要注意的是,当没有任何`std::shared_ptr`指向某个对象时,该对象将被自动删除。这种自动化的内存管理可以避免内存泄漏和悬空指针的问题。
阅读全文