std::shared_ptr使用
时间: 2024-01-16 13:17:48 浏览: 85
shared_ptr
std::shared_ptr是C++中的一种智能指针,它可以用于管理动态分配的内存资源。它能够记录多少个shared_ptr共同指向一个对象,并在引用计数变为零时自动删除对象,从而避免了手动调用delete的麻烦。
以下是std::shared_ptr的使用示例:
```cpp
#include <iostream>
#include <memory>
int main() {
std::shared_ptr<char> sp1(new char[20]); // 创建一个shared_ptr,指向一个大小为20的字符数组
std::shared_ptr<char> sp2(new char[20], [](char* p) { delete[] p; }); // 创建一个shared_ptr,并指定自定义的删除器
std::shared_ptr<char> sp3(new char[20], std::default_delete<char[]>()); // 创建一个shared_ptr,并使用默认的删除器
// 使用shared_ptr
sp1.get()[0] = 'H';
sp1.get()[1] = 'e';
sp1.get()[2] = 'l';
sp1.get()[3] = 'l';
sp1.get()[4] = 'o';
sp1.get()[5] = '\0';
std::cout << sp1.get() << std::endl; // 输出:Hello
return 0;
}
```
在上面的示例中,我们创建了三个shared_ptr对象,分别指向大小为20的字符数组。我们可以通过调用`get()`方法获取指向的原始指针,并使用原始指针来操作内存。当所有的shared_ptr对象都不再引用该内存时,内存会被自动释放。
阅读全文