c++ 11智能指针总是代替new/delete
C++11 smart pointers always instead of new/delete?
在c++ 11中,我们应该总是使用unique_ptr
或shared_ptr
而不是new
/delete
吗?它的性能如何,智能指针慢得多吗?
unique_ptr
与使用原始指针相比没有(不应该)有任何运行时开销。shared_ptr
确实有一些内存和时间开销(多少取决于实现)。如果您确实需要像shared_ptr
一样的行为(也就是说,您认为没有其他实现会更快或更有效地使用内存),那么实际开销在这里可以很容易地为零。
这并不是说你永远不会在你的代码中使用new/delete,但你不会一直这样做。
我更喜欢shared_ptr来处理原始内存,因为-
1)遵循RAII和计数体习惯用法。
2)对象保证销毁,即使发生异常也释放内存。
相关文章:
- new[] / delete[] 并在C++中抛出构造函数/析构函数
- QQuickView new-delete-type-mismatch
- 创建 myNew/myDelete 以替换 new/new[]/delete/delete[]
- 为多线程环境包装 c++ new/delete 的安全/好方法
- c++ 运算符 new[]/delete [] 是否调用运算符 new/delete?
- C++内存分配失败(使用 new & delete)
- c++重载运算符new delete
- 在 C++ 中将 malloc/free 替换为 new/delete
- new/delete 和 ::new/::d elete 有什么区别?
- 我什么时候应该在C++中重载new/delete
- 在C++中,"new/delete"在结构上代替"malloc/free"有多好?
- 为什么我的信号槽比QThreadPool+new+delete慢
- malloc()/free()/new/delete/delete[] 的算法复杂度是多少?
- C++中new[]/delete[]与new/delete之间的差异
- 标准C++的哪些部分将调用malloc/free而不是new/delete
- C++中的 malloc/free 和 new/delete 兼容性
- 编译器将 malloc/free 或 new/delete 对优化为 alloca
- 在 ANSI C 中使用 new/delete 的缺点
- 为什么使用 malloc/free,当我们有 new/delete 时
- c++如何知道在new/delete之后指向内存的位置