C ++ - shared_ptr <vector <t>&gt; vs. vector <shared_ptr <t>&gt; </shared_ptr <t> </vector <t>

时间:2014-10-06 07:55:58

标签: c++ stl shared-ptr stdvector

我看到很多人使用vector<shared_ptr<T>>的情况。您何时以及为何使用shared_ptr<vector<T>>代替?对我来说,后者在性能和内存使用方面似乎都更有效。在整个应用程序中共享一个对象向量是错误的吗?

由于

1 个答案:

答案 0 :(得分:7)

此用法:vector<shared_ptr<T>>将允许您将此向量中的T类型的实例传递给代码的其他部分,而不必担心它们不会被释放。即使你的矢量将不复存在。

另一方面,

shared_ptr<vector<T>>仅保护向量,其T类型的元素不受内存泄漏的保护。我假设T是指针类型,如果T是非指针,那么你当然不会在这里造成内存泄漏问题。那么有人可以实际{。}}。

使用T = shared_ptr<T>实际上更常见,我真的不记得使用vector<shared_ptr<T>>

关键是永远不要在你的代码中保留指向已分配内存的指针,始终将它们保存在某种智能指针中。如果你实现自己的分配/解除分配机制,那就完全没问题,即使用RAII。