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

C++11 smart pointers always instead of new/delete?

本文关键字:new delete 智能 指针 c++      更新时间:2023-10-16

在c++ 11中,我们应该总是使用unique_ptrshared_ptr而不是new/delete吗?它的性能如何,智能指针慢得多吗?

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

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

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

1)遵循RAII和计数体习惯用法。

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