shared_ptr 和weak_ptr怎么使用
时间: 2023-02-10 19:26:03 浏览: 152
`shared_ptr` 和 `weak_ptr` 是 C++ 中的智能指针,它们用于管理动态分配的内存。
使用 `shared_ptr` 时,需要注意以下几点:
- `shared_ptr` 会维护一个引用计数,表示当前有多少个指针指向动态分配的内存。当最后一个指针指向内存时,`shared_ptr` 会自动释放内存。
- 可以使用构造函数来创建一个 `shared_ptr`,例如:
```c++
// 使用 new 关键字动态分配内存
int *p = new int;
// 将 p 封装为 shared_ptr
std::shared_ptr<int> sp1(p);
// 使用 make_shared 函数动态分配内存并封装为 shared_ptr
auto sp2 = std::make_shared<int>();
```
- 可以使用赋值运算符来拷贝或移动 `shared_ptr`,例如:
```c++
std::shared_ptr<int> sp1 = std::make_shared<int>(42);
std::shared_ptr<int> sp2;
// 拷贝 sp1
sp2 = sp1;
// 移动 sp1
std::shared_ptr<int> sp3 = std::move(sp1);
```
- 可以使用 `get()` 函数来获取指针,例如:
```c++
std::shared_ptr<int> sp = std::make_shared<int>(42);
// 获取 sp 指向的指针
int *p = sp.get();
```
使用 `weak_ptr` 时,需要注意以下几点:
- `weak_ptr` 不会维护引用计数,也不会自动释放内存。它的作用是观察一个 `shared_ptr` 是否还有效
阅读全文