のstd::make_unique
ような効率上の利点はありstd::make_shared
ますか?
手動で構築するのと比較してstd::unique_ptr
:
std::make_unique<int>(1); // vs
std::unique_ptr<int>(new int(1));
make_shared
オブジェクトのスペースと制御ブロックのスペースの両方を1つの割り当てで一緒に割り当てることができるためです。その代償として、オブジェクトを制御ブロックとは別に解放することができないためweak_ptr
、大量に使用すると、より多くのメモリを使用することになります。
make_shared
任意の効率だけ長い手のコードを書く以上を持っていますか?