sharedptr的用法
时间: 2023-09-19 09:01:38 浏览: 35
shared_ptr是C++11引入的一种智能指针,用于管理动态分配的内存。它的主要用法是跟踪指向一个对象的所有共享指针,并在最后一个指针离开作用域时自动释放内存。
在使用shared_ptr时,首先需要包含<memory>头文件。我们可以使用make_shared函数来创建一个shared_ptr对象,并将其初始化为一个动态分配的对象。例如,shared_ptr<int> ptr = make_shared<int>(5); 创建了一个指向int类型的共享指针,并将其初始化为值为5的动态分配的对象。
可以使用“->”运算符访问shared_ptr指向的对象成员。例如,ptr->value()可以访问共享指针指向的对象的value()函数。
shared_ptr还可以通过调用get函数,将指向的原始指针作为返回值返回。例如,int* rawPtr = ptr.get(); 这样,我们就可以像使用原始指针一样使用rawPtr。
当需要获得与shared_ptr对象共享资源的指针个数时,可以使用use_count()函数。例如,int count = ptr.use_count(); 得到了shared_ptr对象当前的引用计数。
在使用shared_ptr时,当不需要再引用原始指针指向的对象时,可以将其置为null,即ptr = nullptr; 这样会减少引用计数,当计数为0时,shared_ptr会自动释放内存。
需要注意的是,shared_ptr的循环引用可能导致内存泄漏。这是因为当多个shared_ptr对象互相引用时,它们的引用计数都不会归零,从而导致对象的内存无法释放。为了避免循环引用,应该使用weak_ptr来替代其中一个shared_ptr,从而打破引用环。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)