GCC4.7.0库里的shared_ptr,weak_ptr和unique_ptr的简单讲解(抛砖求玉,有图有真相)

本文介绍了GCC4.7.0库中的智能指针shared_ptr,weak_ptr和unique_ptr。重点讨论了它们的实现细节,特别是并发环境下引用计数的原子性,并探讨了它们在多线程和资源管理中的作用。shared_ptr适用于资源共享,而unique_ptr提供更低的性能开销和唯一所有权。weak_ptr用于解决shared_ptr的循环引用问题。文章提到了C++11的移动语义,并指出智能指针并不保证线程安全。" 116079700,10542656,MATLAB模糊神经网络PID控制器实现,"['模糊系统', '神经网络', '控制理论', 'MATLAB编程']
摘要由CSDN通过智能技术生成

    实习了一个半月了,实习的日子过得真快.亮哥十分照顾,各种指点,还不单单是技术方面的,这就是传说中良师益友啊.实习一下,感觉视野开阔了一些,以前做的感觉都是像小孩子玩具一样,自娱自乐,现在回头去看感觉也挺水的-____-.

    现在基本写代码都是vim了,IDE感觉都是浮云.GDB调试渐入佳境.但是还是没有win下的调试器方便,gdbtui还好,但是始终不及OD的水平.调试的时候还是方便一点的好啊.linux下开发自我感觉算是入了门吧.(好吧,还是菜鸟级别)

    标准库第二版刚好看到智能指针,所以这两天抽空看看4.7.0库里shared_ptr和weak_ptr的实现,循惯例,上图先

    首先是shared_ptr:

    接下来是weak_ptr:

    智能指针由于引入了引用计数,所以需要考虑的一个情况是并发情况下智能指针引用计数更新的原子性,C++11对并发提供了原生的支持,同时加入了原子类型的支持.GCC4.7.0的库实现当中其实已经考虑了对并发情况的处理(没有考察之前的版本),比如说对指针的引用计数和弱引用计数都是使用_Atomic_word类型(应该是一种原子类型),在获取的时候使用类似__exchange_and_add_dispatch这种原子操作.在引用计数块上面使用了_Lock_policy,这些都对并发下的智能指针的健壮提供了保证.

    从上面的图可以看出,shared_ptr的成员包括1.一个指针,这个指向需要管理的内存区域,注意这部分是不支持数组类型的成员的,简单来说你可以传入一个int作为模板参数,但是不支持int[]这样的模板参数(unique_ptr支持),如果想支持数组类型的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值