智能指针的设计

智能指针是c++中一个很重要的概念,其实吧,如果c++设计得足够好,智能指针本不应该出现的,c++标准库的智能指针主要解决了两个问题,一个问题是内存释放问题,另一个问题是指针复用问题,也就是两个指针指向一块内存的问题,其实不管哪个问题都是因为c++对堆的管理不够完美而导致的,堆这种东西需要用户程序库自行管理,管理得好的话会很灵活,但是如果管理的不好就会使编程很棘手,但是栈这种东西却正好相反,但凡当今的计算机机会都支持栈这个概念,并且很多CISC机器的内置指令对栈也提供了支持,比如x86,局部变量出了函数作用域之后会随着栈帧的清除自动被释放,智能指针就是利用这个特性来管理堆内存的,就是在栈变量释放的时候,智能指针的析构函数中释放堆内存,这就省去了程序员自行的管理堆内存了,取而代之的是智能指针自动的管理,因此智能指针称为auto_ptr,c++标准库中的智能指针用独占的方式解决了指针复用的问题,一个指针不能有两个以及两个以上的所有者,但是其它库的智能指针实现用引用计数的方式支持了指针的复用,就是说可以有多个指针指向同一块内存,引用计数可以正确的反映出什么时候能安全的释放内存,就是在引用计数为0的时候。

回顾智能指针的设计可以发现,其实linux内核对内存的管理早就采用了类似的思想,由于在一开始设计时就考虑的很周到,因此内核根本就不用考虑过多的问题以及对问题进行求解,linux内核用c语言完美的实现了完全的面向对象思想,举个例子,为了在c语言封装OO的思想,在使用内存之前,必须用get操作增加其引用计数,结束使用时,用put递减其引用计数,并且判断如果为0则直接释放内存,这里的get和put就是c++智能指针思想的体现

原文链接: https://blog.csdn.net/dog250/article/details/5302950

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    智能指针的设计

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/410578

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月26日 下午12:06
下一篇 2023年4月26日 下午12:06

相关推荐