c++ shared_ptr
时间: 2023-09-03 10:14:45 浏览: 102
C++ 的 `std::shared_ptr` 是一个智能指针,用于管理动态分配的对象的所有权。它允许多个 `shared_ptr` 实例共享同一个对象,并在最后一个 `shared_ptr` 被销毁时自动释放对象内存。
以下是一些关于 `std::shared_ptr` 的基本用法:
1. 创建 `shared_ptr`:
```cpp
std::shared_ptr<int> ptr(new int(10));
```
2. 访问对象:
```cpp
int value = *ptr; // 解引用获取对象值
```
3. 复制和共享:
```cpp
std::shared_ptr<int> ptr1 = ptr; // 共享资源
std::shared_ptr<int> ptr2(ptr); // 复制资源
```
4. 空指针检查:
```cpp
if (ptr) {
// 执行代码
}
```
5. 释放资源:
```cpp
ptr.reset(); // 释放资源,将引用计数减一
```
6. 使用自定义删除器:
```cpp
struct CustomDeleter {
void operator()(int* ptr) {
// 自定义删除器操作
delete ptr;
}
};
std::shared_ptr<int> ptr(new int, CustomDeleter());
```
请注意,当最后一个 `shared_ptr` 被销毁时,它会自动调用删除器或者 `delete` 来释放资源。
`std::shared_ptr` 是 C++11 引入的标准库组件,在多线程环境中也提供了一些线程安全的操作。它是一种强大的工具,能够帮助您管理动态分配的对象,避免内存泄漏和悬垂指针等问题。
阅读全文