使用std::make_unique
初始化std::unique_ptr
相比使用new
运算符有什么优势?
换句话说,为什么
std::unique_ptr<SomeObject> a = std::make_unique(SomeObject(...))
比做更好。std::unique_ptr<SomeObject> a = new SomeObject(...)
我在网上搜索了很多,知道在现代C++中避免使用运算符new
是一个好的经验法则,但我不确定在这种情况下有什么优点。它是否可以防止可能发生的任何内存泄漏?使用std::make_unique
是否比使用new
更快?
std::make_unique(SomeObject(...))
调用了构造函数和拷贝/移动构造函数。更好的选择是直接使用底层模板类型的构造函数参数来调用std::make_unique
。 - stuhlo