Android中強指標和弱指標

來源:互聯網
上載者:User

標籤:

因為Android中很多地方代碼是用C++編寫,為了能夠保證C++中指標能夠被正確的釋放,於是Android引入了其實在C++中已經有的智能指標技術;

智能指標技術的實質就是:記錄引用某一個對象的次數,一旦檢測到次數為0,這時就自定將此對象所佔記憶體釋放。

簡單的的智能指標技術因為不能解決對象循環參考的問題:a引用b;b引用a,這樣的情況下使用簡單的智能指標技術無法解決,故引入強指標和弱指標;

其實完全可以把強弱指標看做c語言中的一個指向對象的地址(為了便於理解),不過區別在於強指標可以操作對象,弱指標不能夠操作對象。但是要知道智能指標並不是真的指標,

他們都是一個對象;

Android中具體的實現細節,羅昇陽的部落格寫的很清晰,可以自己找來看看。

下面只要說一個大致的感覺:

refBase 和 LightRefBase 類只是一個計數器類;真正實現的就是sp<T>和wp<T>,個人覺得完全可以不理會到底的原理,只要會用即可。

 

最近想到其實為什麼深入理解電腦系統那本書中會把c語言中各個元素都在機器級分析一遍,現在我知道了,當你遇見進階的語言時,為了便於

理解其中錯綜複雜的關係,在機器語言層面瞭解可能更好理解並且也更深刻一下,難怪深入理解c++物件模型的重要性,它其實就是在講述c++

在底層的實現方式,從而更加清晰的明白c++其中的概念,難怪有些人會看c++可執行程式的彙編實現一樣的道理。

同時也理解對一個問題認識的深刻性的重大意義,同時提醒自己需要總結和聯結更對自己之前明白的知識,只有將知識聯絡起來才能記得牢同時也能在需要用到的

時候很快的想起來。

Android中強指標和弱指標

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.