C++中强指针和弱指针使用原则浅析

  使用C++开发大型项目时,指针的管理是让人颇为头痛的一件事,也是隐藏在系统中的颗定时炸弹,轻则内存泄露,重则系统崩溃。而智能指针是帮助焦头烂额的C++程序员来管理指针资源的一把利器,其中强指针负责资源回收,而弱指针负责线程安全,配合默契,相得益彰。但是智能指针只有遵循一定的使用规范才能成为利器,没有规范的胡乱使用只会在代码中挖下一个又一个大坑。

  笔者就经历过这样一个项目,由于并没有智能指针的使用规范,程序员又对智能指针不甚了解,再加上不同的技术水平和个人习惯,导致代码中强指针,弱指针,普通指针混杂、胡乱使用,内存泄露严重。指针判空上也是风格各异,不仅使代码看起来无组织纪律,很多也根本没有达到判空的效果。面对这样一堆代码,想要修改也工作量巨大,让人欲语泪先流。

  本文以android中的智能指针为例,谈谈自己的看法。对android智能指针不清楚的同学可以翻看老罗的文章

  一、指针的初始化上

  1. 原则上只使用智能指针,不用普通指针,风格更加统一

  2. 强指针的使用范围:局部变量、子对象指针、可影响其生命周期的对象指针

   该条即是利用强指针进行资源回收,不需要再人工计算new和delete,一个对象在何处(父类中或函数中)创建,就在何处(父类析构或函数结束)回收。

  3. 弱指针的使用范围:父对象指针、某些不能影响其生命周期的对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值