5

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

4

2 回答 2

7

unique_ptr与使用原始指针相比,不(不应该)有任何运行时开销。shared_ptr确实有一些内存和时间开销(多少取决于实现)。如果您确实需要行为类似于 a 的东西,那么这里的实际开销很容易为零shared_ptr(也就是说,您认为没有其他实现会更快或更高效)。

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

于 2013-03-15T12:49:35.083 回答
2

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

1) 它遵循RAIICounted body idioms。

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

3) 不再需要决定何时新建/删除。

于 2013-03-15T13:02:47.883 回答