struct Test{};
std::shared_ptr<test> p1 = std::make_shared<test>();//1</test></test>
std::shared_ptr<test> p2 (new Test);//2</test>
上面的代码1语句只会进行1次内存申请,2语句则会2次内存申请
使用new申请内存方式不会造成内存泄漏
构造函数是保护或私有时,无法直接使用 make_shared
使用 make_shared,对象的内存可能无法及时回收
如果可以,最好把一个原生指针给多个shared_ptr管理,节省内存分配的资源