與內存泄露相比,C++最令人頭痛的問題是內存越界,而內存越界很多情況下是由于懸掛指針引起的。 假設一個指針變量: Object * ptr; 使用ptr時,我們除了要判斷ptr是否為0以外,還要懷疑它指向的對象是否有效,是不是已經在別的地方被銷毀了。我們希望當它指向的對象被銷毀時,ptr被自動置為0。 顯然,C++沒有這種機制,但是,可以借助于boost::weak_ptr做到這一點。
posted on 2007-10-11 11:49 eXile 閱讀(4556) 評論(3) 編輯 收藏 引用 所屬分類: C/C++ 、代碼片段 、STL/BOOST
恩,lz的boost::smartptr很是了解,不過這樣看起來有點復雜,從shared到weak,最后又到shared,能不能直接使用weak_ptr,我還一直不太明白weak_ptr的真正用法,好像是觀察指針是否可用? 回復 更多評論
weak_ptr的主要目的是為了解決引用計數的循環引用問題 boost 出于線程安全的考慮,并沒有為weak_ptr提供->重載或get方法,所以不能直接使用, 還得轉化成shared_ptr 回復 更多評論
weak肯定得從share轉換而來。先有share后有weak,理由和講解可見 http://www.cnblogs.com/TianFang/archive/2008/09/20/1294590.html 回復 更多評論