[英]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.