shared_ptr 使用
时间: 2024-09-12 10:03:36 浏览: 41
C++11 std::shared_ptr总结与使用示例代码详解
`shared_ptr`是C++11标准库中的一个智能指针类模板,它用于实现引用计数的内存管理。当你有一个`shared_ptr`指向一个对象时,它会记录有多少`shared_ptr`实例指向该对象,并且当最后一个`shared_ptr`被销毁或重新指向另一个对象时,所指向的对象也会被自动删除。这样可以有效防止内存泄漏。
`shared_ptr`通常与`make_shared`函数一起使用,后者是一个帮助函数,用于分配对象并返回指向它的`shared_ptr`。
使用`shared_ptr`的基本步骤如下:
1. 包含必要的头文件:
```cpp
#include <memory>
```
2. 创建`shared_ptr`实例:
```cpp
std::shared_ptr<int> ptr = std::make_shared<int>(42); // 分配一个整数并初始化为42
```
3. 使用`shared_ptr`管理的对象:
```cpp
*ptr = 10; // 通过shared_ptr访问对象
std::cout << *ptr << std::endl; // 输出对象的值
```
4. `shared_ptr`会自动管理对象的生命周期,当你不再需要时,可以将其置为`nullptr`或者让其离开作用域:
```cpp
ptr.reset(); // 减少引用计数,如果计数变为0则删除对象
```
5. 多个`shared_ptr`可以指向同一个对象,引用计数会相应增加:
```cpp
std::shared_ptr<int> ptr2 = ptr; // ptr2和ptr现在指向同一个对象
```
阅读全文