smart ptr 学习理解笔记

很多人使用C++的时候,最头疼的问题之一就是内存泄漏和野指针问题,内存泄漏的话风险会很大,野指针问题则会导致程序非法地址访问直接宕机。如果对内存没有概念,不知道生命周期,在使用C++上就会觉得非常头疼,但使用得当的话这也是C++的一把利剑。智能指针的出现,就是为了降低C++程序猿的门槛,即使你对内存没有那么深刻的概念,只要你按照智能指针的规则来使,就能很大程度上避免内存泄漏和野指针这两大难题。


具体的实现有源代码、有数不胜数的教程,这里只记录一下我自己的体会,以便回顾。


智能指针的核心,就是引用计数机制。一般情况下,如果你直接copy一个指针,例如ptr A = B;在B被释放的时候,并没有告知A,导致A仍然记得原来的地址,但是这块地址已经释放过了。再使用A的时候就会内存非法。而智能指针呢,通过重载=操作符,使得在B析构释放的时候,发现引用计数不为零,于是并不会真正的释放这块内存。在A使用的时候,ptr仍然有效。很简单的原理,但是实现的过程却是巨复杂。其实可以根据项目需要,自己定制化自己的智能指针实现。


附上一篇博客:

http://blog.youkuaiyun.com/jnu_simba/article/details/9569593

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值