make_shared の方が効率が良いようだ2016年10月25日 17時50分37秒

#include <memory> にある shared_ptr と make_shared。make_shared は shared_ptr を生成する。下記の二つのメモリの割当てた後の動作は同じ。make_shared を使うと、shared_ptr と対象のオブジェクトが同一メモリに生成されるので二回メモリの割り当てを行う形式よりも若干効率が良い。
std::shared_ptr<int> ptr1 = std::make_shared( 3 );
std::shared_ptr<int> ptr2( new int( 4 ) );
また、new での結果を直接渡す上記の表記だと、shared_ptr の生成に失敗するとメモリリークを起こす。一旦ポインタ型の変数に代入してからなら、メモリりークは回避できるが、大幅な記述量の増加になる。やはり、make_shared の方が便利だ。