在cppref中,直至C++17,以下内容成立:
我想知道在C++17中引入了哪些更改使得这不再适用。像
f(std::shared_ptr<int>(new int(42)), g())
的代码可能会导致内存泄漏,如果g
在new int(42)
之后被调用并且抛出异常,而f(std::make_shared<int>(42), g())
则是安全的,因为两个函数调用永远不会交错。
make_shared
了吗?(虽然它仍然很方便) - user541686