C++ shared_ptr
时间: 2023-08-21 10:05:39 浏览: 116
C++ 中的 `shared_ptr` 是一个智能指针,用于管理动态分配的对象。它是 C++11 引入的一个特性,位于 `<memory>` 头文件中。
`shared_ptr` 可以用来共享一个对象的所有权。它会记录有多少个 `shared_ptr` 共享同一个对象,并且当所有的 `shared_ptr` 都不再使用该对象时,会自动释放对象的内存。
使用 `shared_ptr` 的语法如下所示:
```cpp
#include <memory>
int main() {
// 创建 shared_ptr
std::shared_ptr<int> ptr1 = std::make_shared<int>(42);
// 共享对象的所有权
std::shared_ptr<int> ptr2 = ptr1;
// 使用 shared_ptr 操作对象
*ptr1 = 100;
std::cout << *ptr2 << std::endl; // 输出:100
// 释放对象内存
ptr1.reset();
std::cout << *ptr2 << std::endl; // 输出:100
return 0;
}
```
在上述示例中,我们首先创建了一个 `shared_ptr`,并使用 `make_shared` 函数动态分配一个整数对象,并将其初始化为 42。然后我们创建了另一个 `shared_ptr`,并将其指向第一个 `shared_ptr` 所管理的对象。通过这种方式,两个 `shared_ptr` 共享同一个整数对象。我们可以通过任意一个 `shared_ptr` 来访问和操作该对象,并且当两个 `shared_ptr` 都不再使用该对象时,会自动释放对象的内存。
需要注意的是,`shared_ptr` 使用引用计数的方式来管理对象的生命周期。当引用计数变为零时,即没有任何 `shared_ptr` 指向该对象时,会自动调用对象的析构函数来销毁对象。这种智能指针可以避免常见的内存泄漏问题。
阅读全文