std::shared_ptr用法
时间: 2023-09-23 20:06:32 浏览: 105
std::shared_ptr是C++标准库中的智能指针类,用于管理动态分配的对象。它可以自动地进行内存管理,避免内存泄漏和悬空指针等问题。
使用std::shared_ptr时,首先需要包含头文件<memory>。然后可以通过以下方式创建std::shared_ptr对象:
1. 使用make_shared函数:
```cpp
auto ptr = std::make_shared<T>(args...);
```
这种方式会在堆上分配一个新对象,并返回一个指向该对象的std::shared_ptr。
2. 使用构造函数:
```cpp
std::shared_ptr<T> ptr(new T(args...));
```
这种方式也会在堆上分配一个新对象,并返回一个指向该对象的std::shared_ptr。
3. 使用reset函数重新分配对象:
```cpp
ptr.reset(new T(args...));
```
这种方式会释放原有的对象,在堆上分配一个新对象。
std::shared_ptr的拷贝构造函数和赋值运算符会增加引用计数,当引用计数为0时,即没有任何std::shared_ptr指向该对象时,会自动释放该对象。
std::shared_ptr还可以通过get函数获取原始指针,通过reset函数释放对象并重置为nullptr,通过use_count函数获取当前引用计数。
需要注意的是,避免循环引用的问题,即两个或多个std::shared_ptr相互持有对方的指针,导致引用计数永远不为0,从而造成内存泄漏。可以使用std::weak_ptr来解决循环引用的问题。
希望这个回答能够帮到您!如果还有其他问题,请继续提问。
阅读全文