我對「強指針」和「弱指針」的概念感到困惑。 Diane Hackborn自己說:什麼是強指針和弱指針
對象將保持在有強指針的時候;一旦最後一個被釋放,它就會被銷燬 。你所能做的就是用一個弱指針 進行比較並試圖將其提升爲強指針; 如果 對象上沒有其他強指針,則後者將失敗。
這對我來說很不清楚。強指針相當於(boost::
)共享指針嗎?如果只是試圖將自己提升爲強大的指針,那麼弱指針的作用是什麼?就像,我們什麼時候需要弱和強的指針?
更新:
謝謝大家,但我專門詢問有關Android的內核sp
和wp
,他們什麼都沒有做與所有的Java引用。
基本上我想在這裏破解密碼http://www.androidenea.com/2010/03/share-memory-using-ashmem-and-binder-in.html 而並不真正瞭解使用sp
和wp
更新:
實際的答案在於接受的意見回答。由於加布Sechan:
強弱指針是不同的智能指針實現 做差不多的東西─當指針超出範圍,只要 至少一個強有力的指針引用它,它不會被釋放。如果 只有弱指針(或沒有)引用它。檢查是 每當強或弱的引用被取消時完成。
如果我有10個弱指針引用相同的對象,並且其中一個 超出範圍,對象將被銷燬?鑑於 強烈的指針,只有當他們所有10個超出範圍將 對象被摧毀?
是的,差不多。如果你所擁有的只有10個弱指針,那麼當最後一個強指針去掉 的範圍時,可能 已經超出了範圍。如果有空閒的內存,執行可能允許它稍微延長一點 ,但是如果您將 轉換爲內存不足的狀態,並且聽起來不像它們的 實現是從她的報價中提高的那樣,它將被切碎。而且這個的使用仍然主要是緩存 - 它大致相當於一個boost shared_ptr 並提升weak_ptr。所以基本上,一個弱指針可以讓它隨時引用的對象 消失。
+1努力解釋這個概念 – miller 2014-07-02 12:50:52