当前位置:网站首页>智能指针备注

智能指针备注

2022-06-24 06:44:00 雾散睛明

智能指针备注
c++标准库
memory
shared_ptr
weak_ptr
unique_ptr

shared_ptr:共享指针对象。采用引用计数得方式,决定指向得内存是否释放掉。
其中包括_uses计数和_weaks计数。
当新建一个 shared_ptr对象时,_uses和_weaks都为1.
将shared_ptr对象 赋值给 weak_ptr 时,_uses计数不变,_weaks 加1.
当将weak_ptr对象赋值给shared_ptr 时,_uses计数加1,_weaks计数不变。
shared_ptr 对象析构时,_uses 计数自减1,当_uses计数为0时,释放所指向得内存,并且_weaks 计数自减1.当_weaks 计数为0时,释放计数对象。
weak_ptr 析构时,_weaks 自减1,当_weaks 计数为0时,释放计数对象。
可以看出,weak_ptr对象并不释放指向得内存空间,只有shared_ptr负责释放指向得内存。

weak_ptr:常用于 shared_ptr 对象得交叉引用。

unique_ptr:享有内存的所有权,即同一时间只有一个unique_ptr指向拥有的内存。

boost库
scoped_ptr:用于在离开作用域时,释放对象,且不支持拷贝构造和赋值操作。
shared_ptr:和c++ shared_ptr 差不多。
weak_ptr:和c++ weak_ptr 差不多。

原网站

版权声明
本文为[雾散睛明]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_25160759/article/details/116233257