因为Android中很多地方代码是用C++编写,为了能够保证C++中指针能够被正确的释放,于是Android引入了其实在C++中已经有的智能指针技术;
智能指针技术的实质就是:记录引用某一个对象的次数,一旦检测到次数为0,这时就自定将此对象所占内存释放。
简单的的智能指针技术因为不能解决对象循环引用的问题:a引用b;b引用a,这样的情况下使用简单的智能指针技术无法解决,故引入强指针和弱指针;
其实完全可以把强弱指针看做c语言中的一个指向对象的地址(为了便于理解),不过区别在于强指针可以操作对象,弱指针不能够操作对象。但是要知道智能指针并不是真的指针,
他们都是一个对象;
Android中具体的实现细节,罗升阳的博客写的很清晰,可以自己找来看看。
下面只要说一个大致的感觉:
refBase 和 LightRefBase 类只是一个计数器类;真正实现的就是sp<T>和wp<T>,个人觉得完全可以不理会到底的原理,只要会用即可。
最近想到其实为什么深入理解计算机系统那本书中会把c语言中各个元素都在机器级分析一遍,现在我知道了,当你遇见高级的语言时,为了便于
理解其中错综复杂的关系,在机器语言层面了解可能更好理解并且也更深刻一下,难怪深入理解c++对象模型的重要性,它其实就是在讲述c++
在底层的实现方式,从而更加清晰的明白c++其中的概念,难怪有些人会看c++可执行程序的汇编实现一样的道理。
同时也理解对一个问题认识的深刻性的重大意义,同时提醒自己需要总结和联接更对自己之前明白的知识,只有将知识联系起来才能记得牢同时也能在需要用到的
时候很快的想起来。
时间: 2024-10-25 02:17:00