智能指针c++怎么用
时间: 2024-10-14 11:01:07 浏览: 40
在C++中,智能指针是C++标准库中的模板类,用于封装动态分配的资源,并自动处理内存的清理工作。以下是几种常用的智能指针:
1. **unique_ptr**:独占所有权,确保只有一个智能指针指向该资源。当你将unique_ptr传递给另一个函数或赋值给其他unique_ptr时,原始对象的所有权会被转移。
```cpp
std::unique_ptr<int> ptr(new int(42));
// 只有ptr拥有所有权,ptr离开作用域时资源自动释放
```
2. **shared_ptr**:共享所有权,多个shared_ptr可以同时持有同一个对象。当最后一个shared_ptr失效时,对象才会被释放。
```cpp
std::shared_ptr<int> ptr1(new int(42)), ptr2 = ptr1; // ptr1和ptr2共享所有权
```
3. **weak_ptr**:弱引用,不会增加所指向对象的引用计数。常用于解决循环依赖时的内存泄露问题。
```cpp
std::shared_ptr<int> strongPtr(new int(42));
std::weak_ptr<int> weakPtr(strongPtr);
if (auto lock = strongPtr.lock()) { // 如果strongPtr仍然有效
// 使用lock锁定访问
}
```
智能指针的使用通常涉及创建、传递以及自动管理对象的生命周期。记得在不需要对象时,智能指针会自动删除,无需显式调用delete。这是C++中避免内存泄漏的一种重要方式。
阅读全文