Android中强指针和弱指针

因为Android中很多地方代码是用C++编写,为了能够保证C++中指针能够被正确的释放,于是Android引入了其实在C++中已经有的智能指针技术;

智能指针技术的实质就是:记录引用某一个对象的次数,一旦检测到次数为0,这时就自定将此对象所占内存释放。

简单的的智能指针技术因为不能解决对象循环引用的问题:a引用b;b引用a,这样的情况下使用简单的智能指针技术无法解决,故引入强指针和弱指针;

其实完全可以把强弱指针看做c语言中的一个指向对象的地址(为了便于理解),不过区别在于强指针可以操作对象,弱指针不能够操作对象。但是要知道智能指针并不是真的指针,

他们都是一个对象;

Android中具体的实现细节,罗升阳的博客写的很清晰,可以自己找来看看。

下面只要说一个大致的感觉:

refBase 和 LightRefBase 类只是一个计数器类;真正实现的就是sp<T>和wp<T>,个人觉得完全可以不理会到底的原理,只要会用即可。

 

最近想到其实为什么深入理解计算机系统那本书中会把c语言中各个元素都在机器级分析一遍,现在我知道了,当你遇见高级的语言时,为了便于

理解其中错综复杂的关系,在机器语言层面了解可能更好理解并且也更深刻一下,难怪深入理解c++对象模型的重要性,它其实就是在讲述c++

在底层的实现方式,从而更加清晰的明白c++其中的概念,难怪有些人会看c++可执行程序的汇编实现一样的道理。

同时也理解对一个问题认识的深刻性的重大意义,同时提醒自己需要总结和联接更对自己之前明白的知识,只有将知识联系起来才能记得牢同时也能在需要用到的

时候很快的想起来。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。