C ++ 11智能指针总是代替new / delete?

时间:2013-03-15 12:42:54

标签: c++ performance c++11 new-operator smart-pointers

在C ++ 11中,我们应该始终使用unique_ptrshared_ptr代替new / delete吗?性能如何,智能指针要慢得多?

2 个答案:

答案 0 :(得分:7)

与使用原始指针相比,

unique_ptr不会(不应该)具有任何运行时开销。 shared_ptr确实有一些内存和时间开销(多少取决于实现)。如果你真的需要像shared_ptr这样的东西,那么实际开销很容易为零(也就是说,你认为没有其他任何实现更快或更高内存效率)

这并不是说你永远不会在代码中使用new / delete,但这不是你一直都会做的事情。

答案 1 :(得分:2)

我更喜欢shared_ptr来处理原始内存,因为 -

1)它遵循RAIICounted body惯用语。

2)保证对象被破坏,即使发生异常也会释放内存。

3)没有更多选择决定何时新/删除。