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。

最新文章

  1. cinnamon桌面安装在其他目录下
  2. render()方法是render_to_response
  3. Xcode奔溃错误码
  4. 2.HTML5 标准改变,准备工作
  5. Correct use of System.Web.HttpResponse.Redirect
  6. openCV的基本操作
  7. Linux重定向的理解
  8. 关于no system images installed for this target解决方法
  9. Android版多线程下载器核心代码分享
  10. 使用after伪类清除浮动
  11. LeetCode——TwoSum
  12. 七天学会ASP.NET MVC (四)——Layout页面使用和用户角色管理 (代码下载)
  13. 将Maven的Web项目部署到windows的Tomcat里
  14. idea激活网站地址,亲测可用(windows7,idea 2016)
  15. elk部署之前注意事项
  16. idea svn 不见的问题
  17. NVMe标准规范
  18. Qt学习之路(28): 坐标变换
  19. tomcat如何配置俩个版本
  20. 使用百度编辑器--ueditor,后台接收提交编辑的内容,HTML不见了, 赋值不了,赋值之后,html暴露出来了??

热门文章

  1. 深度学习笔记之【随机梯度下降(SGD)】
  2. libevent的作用或者说是有哪些功能
  3. 【LCA/tarjan】POJ1470-Closest Common Ancestors
  4. Android UI设计规范之常用单位
  5. 整数求和 Exercise07_21
  6. 【洛谷】2990:[USACO10OPEN]牛跳房子Cow Hopscotch【单调队列优化DP】
  7. Miller_rabin算法+Pollard_rho算法 POJ 1811 Prime Test
  8. asp.net mvc中DropDownList
  9. [转]Android:Activity+Fragment及它们之间的数据交换(一)
  10. MYSQL学习笔记 (五)常用的聚合函数