什麼時候應該使用intrusive_ptr而不是shared_ptr?Boost智能指針
16
A
回答
15
當您已經有一個引用計數器存儲在您指向的對象內時。
+1
+1,除了錯字,所以我爲你修復:)。 – 2011-03-04 16:12:23
11
從C++標準庫超越:介紹提振 比昂·卡爾森
在大多數情況下,你不應該使用boost :: intrusive_ptr,因爲共同擁有的功能更是一應俱全升壓: :shared_ptr,非侵入式智能指針比侵入式智能指針更靈活。但是,有時候需要插入引用計數,可能是遺留代碼或與第三方類的集成。當需要時,intrusive_ptr符合法案,與其他Boost智能指針類具有相同的語義。
通過使用另一個Boost智能指針,可以確保所有智能指針需求的一致接口,無論它們是否侵入。引用計數必須由與intrusive_ptr一起使用的類提供。 intrusive_ptr通過對兩個函數intrusive_ptr_add_ref和intrusive_ptr_release進行非限定調用來管理引用計數;這些函數必須正確處理intrusive_privile參數才能正常工作。對於與intrusive_ptr一起使用的類型中已經存在引用計數的所有情況,啓用對intrusive_ptr的支持與實現這兩個函數一樣簡單。
時
- 你需要把它當作一個智能指針使用intrusive_ptr。
- 存在使用或提供侵入式引用計數的現有代碼。
- 智能指針的大小等於原始指針的大小是非常重要的。
3
尼克說什麼。一個真實的例子是管理COM指針。
相關問題
- 1. Boost智能指針和線程
- 2. Qt智能指針相當於Boost :: shared_ptr?
- 3. C++智能指針
- 4. 智能指針在智能指針管理數組內
- 5. 指針和智能指針的區別
- 6. 智能指針代替指針
- 7. 通過引用傳遞boost智能指針
- 8. GMP和智能指針
- 9. C++:實現智能指針
- 10. 智能指針與PythonQt
- 11. C++智能指針表現
- 12. C++中的智能指針
- 13. 激活智能指針?
- 14. 智能指針::地圖
- 15. 二叉樹智能指針
- 16. 智能指針三規則?
- 17. 數組和智能指針
- 18. 智能指針和dynamic_cast
- 19. 智能指針類predeclaration
- 20. 獲取智能指針的指針指針
- 21. 帶智能指針的C++智能矢量?
- 22. 調用一個成員函數指針的智能指針
- 23. 用智能指針替換現有的原始指針
- 24. 刪除智能指針,但仍可以訪問指針?
- 25. 集成智能指針遺留代碼原始指針
- 26. 從原始指針轉換爲智能指針
- 27. C++智能指針:共享指針與共享數據
- 28. 我的函數應該接受指針還是智能指針?
- 29. 重新分配智能指針
- 30. 在UML中繪製智能指針
+1不錯的問題,但[可能重複](http://stackoverflow.com/questions/569775/smart-pointers-boost-explained)。 – 2011-03-04 16:15:06