簡體   English   中英

C ++ - shared_ptr <vector <T >>與vector <shared_ptr <T >>

[英]C++ - shared_ptr<vector<T>> vs. vector<shared_ptr<T>>

我看到很多人使用vector<shared_ptr<T>> 何時以及為什么要使用shared_ptr<vector<T>> 對我來說,后者在性能和內存使用方面似乎都更有效。 在整個應用程序中共享一個對象向量是錯誤的嗎?

謝謝

這個用法: vector<shared_ptr<T>>允許你將類型為T實例從這個向量傳遞給代碼的其他部分而不用擔心它們不會被釋放。 即使你的矢量將不復存在。

另一方面, shared_ptr<vector<T>>僅保護向量,其類型T元素不受內存泄漏的保護。 我假設T是指針類型,如果T是非指針,那么當然你沒有在這里造成內存泄漏的問題。 那么有人可以讓T = shared_ptr<T>

實際上使用vector<shared_ptr<T>>更常見,我真的不記得使用shared_ptr<vector<T>>

關鍵是永遠不要在你的代碼中保留指向已分配內存的指針,始終將它們保存在某種智能指針中。 如果你實現自己的分配/解除分配機制,那就完全沒問題了。 使用RAII。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM