正文: 分配一个内存 并 新建一个 std::shared_ptr 引用它,有两种方法: 使用 std::make_shared; 使用 std::shared的构造,即 std::shared(new xxx)。 推荐使用 std::make_shared来 分配内存并新建shared指针
正文:
分配一个内存 并 新建一个 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