我使用boost :: shared_ptr來存儲指向紋理的指針。我按照需要加載新紋理,並使用shared_ptr在程序中共享它們。如果我的應用程序使用的內存太多,我想刪除未使用的紋理來清除內存。有沒有一種方法可以確定有多少物體通過shared_ptr訪問紋理?boost shared_ptr獲取擁有者數量
2
A
回答
6
如果未使用,則shared_ptr
將自動釋放它。這是shared_ptr
的一點。如果您在沒有真正使用紋理的情況下將shared_ptr
保留爲紋理,那麼您違反了shared_ptr
的合同,因此不應使用它。
2
您可以使用shared_ptr::use_count()
,但是請先閱讀文檔!
1
有use_count()
,但請注意,正如文檔所述,它不一定是太高效。
1
shared_ptr
類具有成員函數use_count()
和unique()
可讓您訪問其使用計數。
這是一個不同的問題,儘管如此,這些信息將對您有用。
相關問題
- 1. typedef boost :: shared_ptr <MyJob> Ptr;或者將#define PTR的boost :: shared_ptr的
- 2. 擁有一個weak_ptr向量,想要返回一個向量shared_ptr
- 3. 使用boost :: shared_from_this的,有時不被擁有的對象的shared_ptr
- 4. 獲取ToolStripDropDownItem的最高擁有者
- 5. 從item鎖擁有者獲取context.user.profile
- 6. 獲取進程擁有者(Citrix/Provisioning)
- 7. Boost Python和向量shared_ptr
- 8. Boost shared_ptr use_count函數
- 9. 使用.reset()釋放單獨擁有的boost :: shared_ptr
- 10. boost :: bimap shared_ptr&boost :: transform_iterator
- 11. 自動讀取boost shared_ptr
- 12. C++ 0x std :: shared_ptr與boost :: shared_ptr
- 13. 使用boost shared_ptr
- 14. 複製boost :: shared_ptr
- 15. boost :: shared_ptr和Inheritance
- 16. 如何使用Twitter Api來獲取我擁有的Twitter追隨者的數量?
- 17. boost :: shared_ptr,繼承後訪問變量?
- 18. BOOST_FOREACH崩潰boost :: shared_ptr?
- 19. boost :: shared_ptr和dynamic cast
- 20. boost :: shared_ptr drop-in replacement
- 21. boost :: asio和socket擁有
- 22. QSharedPointer VS std :: tr1 :: shared_ptr VS boost :: tr1 :: shared_ptr
- 23. boost :: shared_ptr <const T> boost :: shared_ptr <T>
- 24. 做boost :: shared_ptr <T>和boost :: shared_ptr <const T>分享引用計數?
- 25. 重置boost :: shared_ptr通過lambda獲取的值
- 26. 獲取Eclipse CDT + boost :: shared_ptr <T>以使用語法完成?
- 27. Android - 使用AccountManager獲取UserData /手機擁有者的姓名
- 28. 'boost shared_ptr'和'boost lock'together =搞砸了
- 29. boost :: shared_ptr boost :: asio聲明錯誤:io_service
- 30. 如何處理不斷髮展的C++ std :: namespace?例如:std :: tr1 :: shared_ptr vs. std :: shared_ptr vs. boost :: shared_ptr vs. boost :: tr1 :: shared_ptr
所有紋理都由ResourceManager通過shared_ptr保存。該程序的其他任何部分都可以通過該經理訪問紋理。我不想刪除紋理,直到我收到內存警告。在這種情況下,我想刪除未使用的紋理(僅由資源管理器保存) – Andrew
@Andrew:你看過boost.weak_ptr還是boost.intrusive_ptr? – PlasmaHH
@Andrew:放棄ResourceManager並離開'shared_ptr'來處理它會更容易。 – Puppy