根据我所做的研究,似乎使用
std::make_shared
构建std::shared_ptr
是首选方法。具体原因如下:
- 与使用
new
相比,它仅执行一次内存分配。 - 如果传递给make_shared的构造函数抛出异常,则不会像使用new那样泄漏。
make_shared
,还是有一些情况下更适合使用new
?
shared_ptr
构造函数抛出异常,shared_ptr<int>(new int)
不会泄漏内存;这是您的第二点对我来说似乎意味着这一点。 - Simple