在 C++11 中,我们应该始终使用unique_ptr
orshared_ptr
代替new
/delete
吗?性能如何,智能指针慢得多?
问问题
2412 次
2 回答
7
unique_ptr
与使用原始指针相比,不(不应该)有任何运行时开销。shared_ptr
确实有一些内存和时间开销(多少取决于实现)。如果您确实需要行为类似于 a 的东西,那么这里的实际开销很容易为零shared_ptr
(也就是说,您认为没有其他实现会更快或更高效)。
这并不是说你永远不会在你的代码中使用 new/delete,但这不是你会一直做的事情。
于 2013-03-15T12:49:35.083 回答
2
我更喜欢 shared_ptr 来处理原始内存,因为-
1) 它遵循RAII和Counted body idioms。
2) 保证对象被销毁,即使发生异常也会释放内存。
3) 不再需要决定何时新建/删除。
于 2013-03-15T13:02:47.883 回答