在c++ 11中,我们应该总是使用unique_ptr
或shared_ptr
而不是new
/delete
吗?它的性能如何,智能指针慢得多吗?
unique_ptr
与使用原始指针相比没有(不应该)有任何运行时开销。shared_ptr
确实有一些内存和时间开销(多少取决于实现)。如果您确实需要像shared_ptr
一样的行为(也就是说,您认为没有其他实现会更快或更有效地使用内存),那么实际开销在这里可以很容易地为零。
这并不是说你永远不会在你的代码中使用new/delete,但你不会一直这样做。
我更喜欢shared_ptr来处理原始内存,因为-
1)遵循RAII和计数体习惯用法。
2)对象保证销毁,即使发生异常也释放内存。