Rumah >pembangunan bahagian belakang >C++ >`make_shared` lwn. `shared_ptr`: Mengapa One More Cekap dan Exception-Selamat?
Untuk memahami kecekapan std::make_shared berbanding shared_ptr standard , mari kita periksa proses pembinaan mereka secara berperingkat langkah.
Menggunakan pembina shared_ptr standard:
std::shared_ptr<Object> p2(new Object("foo"));
Menggunakan std::make_shared:
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo");
Dalam pendekatan pembina shared_ptr standard, jika pengecualian dilemparkan semasa pembinaan Objek, tiada pembersihan dilakukan, meninggalkan memori yang tergantung. Walau bagaimanapun, std::make_shared menjamin bahawa Objek yang dibina dan blok kawalan adalah sebahagian daripada satu peruntukan dan akan dibersihkan jika pengecualian dilemparkan.
Atas ialah kandungan terperinci `make_shared` lwn. `shared_ptr`: Mengapa One More Cekap dan Exception-Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!