shared_ptr linux
时间: 2023-10-17 09:24:16 浏览: 38
`shared_ptr` 是 C++11 中的智能指针之一,它可以用于管理动态分配的内存。与常规指针不同的是,它可以自动释放分配的内存,从而避免了内存泄漏等问题。
在 Linux 系统中,使用 `shared_ptr` 需要包含 `<memory>` 头文件。使用时需要先创建一个指向对象的 `shared_ptr`,可以通过 `make_shared` 函数或者直接使用构造函数来实现。例如:
```
#include <memory>
#include <iostream>
int main()
{
// 使用 make_shared 创建 shared_ptr
std::shared_ptr<int> p1 = std::make_shared<int>(42);
std::cout << "p1: " << *p1 << std::endl;
// 使用构造函数创建 shared_ptr
std::shared_ptr<int> p2(new int(100));
std::cout << "p2: " << *p2 << std::endl;
return 0;
}
```
`shared_ptr` 的拷贝构造函数和赋值操作符会增加引用计数,析构函数会减少引用计数。当引用计数为 0 时,析构函数会自动释放内存。例如:
```
int main()
{
std::shared_ptr<int> p1(new int(42));
std::shared_ptr<int> p2(p1); // 引用计数增加
std::shared_ptr<int> p3 = p2; // 引用计数增加
std::cout << "p1.use_count(): " << p1.use_count() << std::endl; // 3
p2.reset(); // 引用计数减少
std::cout << "p1.use_count(): " << p1.use_count() << std::endl; // 2
p3.reset(); // 引用计数减少
std::cout << "p1.use_count(): " << p1.use_count() << std::endl; // 1
p1.reset(); // 引用计数减少,内存被释放
return 0;
}
```