了解std::make_shared与标准shared_ptr相比的效率,我们来一步步考察一下他们的构建过程
使用标准的shared_ptr构造函数:
std::shared_ptr<Object> p2(new Object("foo"));
使用 std::make_shared:
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo");
在标准的shared_ptr构造方法中,如果在构造Object期间抛出异常,则不会执行任何清理,留下悬空内存。然而,std::make_shared 保证构造的 Object 和控制块是单个分配的一部分,并且如果抛出异常,将会被清理。
以上是`make_shared` 与 `shared_ptr`:为什么更高效且异常安全?的详细内容。更多信息请关注PHP中文网其他相关文章!