std::make_shared<...>的作用

      std::make_shared是C++ 11引入的模板函数,可以返回一个指定类型的std::shared_ptr,它相比于std::shared_ptr的构造函数有以下优点:

      1、效率更高

 例如内存分配方面,std::make_shared的内存分配可以一次性完成,减少了内存分配的次数。由于内存分配是代价很高的操作,内存分配次数越多,代价也就越大。

      2、异常安全

std::shared_ptr的构造函数在复用时可能会带来内存泄漏的问题,std::make_shared则可避免此种情况发生。

     当然std::make_shared也有缺点:

对象的内存可能无法及时回收,对于内存要求高的场景需注意。同时对于构造函数是保护或私有时,std::make_shared不能使用,不过也有一些其他办法可绕过去的。

你可能感兴趣的:(c++,算法,开发语言)