std的shared_ptr
时间: 2023-12-06 22:36:33 浏览: 67
std的shared_ptr是C++11中引入的一种智能指针,它可以实现多个指针共享同一个对象,避免了手动管理内存的麻烦。每个shared_ptr对象内部都有一个引用计数器,记录有多少个shared_ptr对象指向同一个对象。当引用计数器为0时,自动释放所指向的对象。shared_ptr还支持自定义删除器,可以在对象被释放时执行一些额外的操作。
下面是一个使用shared_ptr的例子:
```c++
#include <iostream>
#include <memory>
using namespace std;
class MyClass {
public:
MyClass() {
cout << "MyClass constructor called." << endl;
}
~MyClass() {
cout << "MyClass destructor called." << endl;
}
};
int main() {
shared_ptr<MyClass> ptr1(new MyClass());
shared_ptr<MyClass> ptr2 = ptr1; // 多个指针共享同一个对象
cout << "ptr1 use count: " << ptr1.use_count() << endl; // 输出:2
cout << "ptr2 use count: " << ptr2.use_count() << endl; // 输出:2
ptr1.reset(); // 释放ptr1指向的对象
cout << "ptr1 use count: " << ptr1.use_count() << endl; // 输出:0
cout << "ptr2 use count: " << ptr2.use_count() << endl; // 输出:1
return 0;
}
```
阅读全文