[modern c++] std::make_shared 和 std::shared(new)的区别
分配一个内存 并 新建一个 std::shared_ptr 引用它,有两种方法:
使用 std::make_shared;使用 std::shared的构造,即 std::shared(new xxx)。推荐使用 std::make_shared来 分配内存并新建shared指针。但是make_shared无法指定deletor,因此如果分配的是一个数组,那么需要考察make_shared的底层是不是调用的delete[],如果是则安全,如果不是则存在一定的内存泄露可能性,具体参考:
需要注意的是,从 c++ 20 开始,才可以使用 std::make_shared 来创建数组,具体用法见:
std::make_shared, std::make_shared_for_overwrite - cppreference.com
https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:css怎么设置横线的阴影 下一篇:Linux下用什么命令创建新用户,删除操作是什么