了解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中文網其他相關文章!