我使用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. 獲取進程擁有者(Citrix/Provisioning)
- 3. 獲取ToolStripDropDownItem的最高擁有者
- 4. Boost Python和向量shared_ptr
- 5. Boost shared_ptr use_count函數
- 6. 使用.reset()釋放單獨擁有的boost :: shared_ptr
- 7. boost :: bimap shared_ptr&boost :: transform_iterator
- 8. 自動讀取boost shared_ptr
- 9. boost :: shared_ptr和Inheritance
- 10. 使用boost shared_ptr
- 11. 複製boost :: shared_ptr
- 12. boost :: shared_ptr drop-in replacement
- 13. boost :: shared_ptr和dynamic cast
- 14. boost :: asio和socket擁有
- 15. QSharedPointer VS std :: tr1 :: shared_ptr VS boost :: tr1 :: shared_ptr
- 16. boost :: shared_ptr <const T> boost :: shared_ptr <T>
- 17. 做boost :: shared_ptr <T>和boost :: shared_ptr <const T>分享引用計數?
- 18. 獲取Eclipse CDT + boost :: shared_ptr <T>以使用語法完成?
- 19. 重置boost :: shared_ptr通過lambda獲取的值
- 20. 'boost shared_ptr'和'boost lock'together =搞砸了
- 21. 如何處理不斷髮展的C++ std :: namespace?例如:std :: tr1 :: shared_ptr vs. std :: shared_ptr vs. boost :: shared_ptr vs. boost :: tr1 :: shared_ptr
- 22. 迭代指針向量的獲取者
- 23. C++ boost深層拷貝:: shared_ptr
- 24. C++ 11 std :: shared_ptr + boost :: serialization
- 25. Boost shared_ptr容器問題
- 26. boost shared_ptr騎行參考?
- 27. 使用shared_ptr boost tcp socket C++
- 28. Boost shared_ptr解引用費用
- 29. Objective-C++中的boost :: shared_ptr
- 30. 我應該限制我擁有的執行者數量嗎?
所有紋理都由ResourceManager通過shared_ptr保存。該程序的其他任何部分都可以通過該經理訪問紋理。我不想刪除紋理,直到我收到內存警告。在這種情況下,我想刪除未使用的紋理(僅由資源管理器保存) – Andrew
@Andrew:你看過boost.weak_ptr還是boost.intrusive_ptr? – PlasmaHH
@Andrew:放棄ResourceManager並離開'shared_ptr'來處理它會更容易。 – Puppy