c++shared_ptr
时间: 2023-10-17 09:27:10 浏览: 103
C++中的`shared_ptr`是一种智能指针,用于管理动态分配的资源。它允许多个指针共享同一个对象,而不会导致资源的重复释放。`shared_ptr`使用引用计数的方式来跟踪对象的使用情况,并在没有任何指针引用该对象时自动释放相关资源。
要使用`shared_ptr`,你首先需要包含头文件`<memory>`。然后,可以使用`std::shared_ptr`模板类来创建智能指针对象。例如:
```cpp
#include <memory>
int main() {
// 创建一个shared_ptr来管理动态分配的整数对象
std::shared_ptr<int> ptr(new int(42));
// 使用shared_ptr时,可以像使用原始指针一样访问对象
std::cout << *ptr << std::endl;
// 其他shared_ptr可以共享同一个对象
std::shared_ptr<int> ptr2 = ptr;
// 引用计数增加为2,对象仍然存在
// 可以通过重置智能指针来释放对象
ptr.reset();
// 引用计数减为1,对象仍然存在
// 最后一个指向对象的shared_ptr被销毁时,对象才会被释放
ptr2.reset();
return 0;
}
```
这只是`shared_ptr`的基本用法示例。它还提供了其他功能,如自定义删除器、数组支持等。使用`shared_ptr`可以更方便地管理动态分配的资源,避免内存泄漏和悬空指针等问题。
阅读全文