![](/img/trans.png)
[英]vector<A> vs vector<A*> vs vector<shared_ptr<A> > in C++
[英]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.