share_ptr
2024-09-04 10:23:44
1、为了保证不会重复释放内存,auto_ptr的copy构造和copy赋值都是破坏性操作,执行后,导致右操作数的指针为0。这就出现了,copy构造或者copy赋值后,两个对象不相等了。
2、auto_ptr的问题就是,一块内存只能有一个指针指向它,为了解决这个问题,使用share_ptr。
3、share_ptr是如何实现的?
a、内部有一个指向原始资源的指针。
b、内部维护一个share_count,记录有多少个指针指向该内存。
c、析构的时候,share_count>1,将计数减1;share_count==1释放内存。
d、考虑到每个share_ptr中都有一个自己的share_count,而且还要保证这个数一致,应该这样做:先对原始资源封装,加入share_count,成为带有count的资源,share_count在对它封装,这样就可以只有一个share_count了。
e、copy构造的时候,lhs的指针指向rhs的资源,share_count加1。
f、copy赋值的时候,先检查左操作数原来的资源是否可以释放,lhs的指针指向rhs的资源,share_count加1。
最新文章
- cinnamon桌面安装在其他目录下
- render()方法是render_to_response
- Xcode奔溃错误码
- 2.HTML5 标准改变,准备工作
- Correct use of System.Web.HttpResponse.Redirect
- openCV的基本操作
- Linux重定向的理解
- 关于no system images installed for this target解决方法
- Android版多线程下载器核心代码分享
- 使用after伪类清除浮动
- LeetCode——TwoSum
- 七天学会ASP.NET MVC (四)——Layout页面使用和用户角色管理 (代码下载)
- 将Maven的Web项目部署到windows的Tomcat里
- idea激活网站地址,亲测可用(windows7,idea 2016)
- elk部署之前注意事项
- idea svn 不见的问题
- NVMe标准规范
- Qt学习之路(28): 坐标变换
- tomcat如何配置俩个版本
- 使用百度编辑器--ueditor,后台接收提交编辑的内容,HTML不见了, 赋值不了,赋值之后,html暴露出来了??
热门文章
- 深度学习笔记之【随机梯度下降(SGD)】
- libevent的作用或者说是有哪些功能
- 【LCA/tarjan】POJ1470-Closest Common Ancestors
- Android UI设计规范之常用单位
- 整数求和 Exercise07_21
- 【洛谷】2990:[USACO10OPEN]牛跳房子Cow Hopscotch【单调队列优化DP】
- Miller_rabin算法+Pollard_rho算法 POJ 1811 Prime Test
- asp.net mvc中DropDownList
- [转]Android:Activity+Fragment及它们之间的数据交换(一)
- MYSQL学习笔记 (五)常用的聚合函数