std::shared_ptr<Object> p1 = std::make_shared<Object>("foo");
std::shared_ptr<Object> p2(new Object("foo"));
Run Code Online (Sandbox Code Playgroud)
许多google和stackoverflow帖子就在这里,但我无法理解为什么make_shared比直接使用更有效shared_ptr.
有人可以一步一步解释我创建的对象序列和两者所做的操作,这样我就能理解make_shared效率如何.我在上面给出了一个例子供参考.
只是一个小问题shared_ptr.
使用shared_ptr指向数组是一个好习惯吗?例如,
shared_ptr<int> sp(new int[10]);
Run Code Online (Sandbox Code Playgroud)
如果没有,那么为什么不呢?我已经意识到的一个原因是不能增加/减少shared_ptr.因此,它不能像正常指向数组的指针一样使用.
只是为了澄清一下,make_unique当你在表达式中有多个分配而不只是一个时,使用只会增加异常安全性,对吗?例如
void f(T*);
f(new T);
Run Code Online (Sandbox Code Playgroud)
是完全异常安全(就分配和东西而言),而
void f(T*, T*);
f(new T, new T);
Run Code Online (Sandbox Code Playgroud)
是不正确的?