首页 >后端开发 >C++ >`std::make_unique` 与 `std::unique_ptr` 和 `new`:我什么时候应该使用哪个?

`std::make_unique` 与 `std::unique_ptr` 和 `new`:我什么时候应该使用哪个?

Patricia Arquette
Patricia Arquette原创
2024-12-26 12:17:09921浏览

`std::make_unique` vs. `std::unique_ptr` with `new`: When Should I Use Which?

make_unique 与 std::unique_ptr 与 new

std::make_unique 函数提供了用于构造唯一指针的简化语法。无需手动调用new,可以提高代码的安全性和可读性。与 std::unique_ptr 中显式使用 new 相比,make_unique 具有以下几个优点:

  • 临时对象的异常安全性: make_unique 在使用 new 时可以安全地创建临时唯一指针直接要求遵循不使用未命名临时变量的规则。这消除了异常导致悬空指针的可能性。
  • 简化语法: make_unique 避免了语法 std::unique_ptr(new T( ))。相反,它简化了 make_unique() 的构造。
  • 不鼓励使用 new: make_unique 的引入强化了反对直接使用 new 的建议。它允许开发人员创建唯一的指针,而不需要显式的内存管理,确保所指向对象的所有权得到正确转移。

虽然 make_unique 增强了安全性并提高了代码质量,但它不提供任何运行时效率优势与 std::make_shared 相当。与避免二次分配的 make_shared 不同,make_unique 以与 new 相同的方式分配内存,并且不会优化内存使用。

以上是`std::make_unique` 与 `std::unique_ptr` 和 `new`:我什么时候应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn