我对“强指针”和“弱指针”的概念感到困惑。 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