make_shared 和 allocate_shared 在 boost 中的用法?
usage of make_shared and allocate_shared in boost?
我无法理解有关如何使用 make_shared
和 allocate_shared
初始化共享数组和指针的 boost 文档:
shared_ptr<int> p_int(new int); // OK
shared_ptr<int> p_int2 = make_shared<int>(); // OK
shared_ptr<int> p_int3 = allocate_shared(int); // ??
shared_array<int> sh_arr(new int[30]); // OK
shared_array<int> sh_arr2 = make_shared<int[]>(30); // ??
shared_array<int> sh_arr3 = allocate_shared<int[]>(30); // ??
我正在尝试学习正确的语法来初始化上面注释为 // ??
的变量
allocate_shared
的用法与 make_shared
类似,只是您将分配器作为第一个参数传递。
boost::shared_ptr<int> p_int(new int);
boost::shared_ptr<int> p_int2 = boost::make_shared<int>();
MyAllocator<int> alloc;
boost::shared_ptr<int> p_int3 = boost::allocate_shared<int>(alloc);
boost::shared_array
没有make
函数,所以只能手动分配内存:
boost::shared_array<int> sh_arr(new int[30]);
但 boost::make_shared
等支持数组类型 - 一种未知大小或一种固定大小 - 在这两种情况下都会返回 boost::shared_ptr
:
boost::shared_ptr<int[]> sh_arr2 = boost::make_shared<int[]>(30);
boost::shared_ptr<int[30]> sh_arr3 = boost::make_shared<int[30]>();
请注意 std::shared_ptr
目前不 支持数组。
我无法理解有关如何使用 make_shared
和 allocate_shared
初始化共享数组和指针的 boost 文档:
shared_ptr<int> p_int(new int); // OK
shared_ptr<int> p_int2 = make_shared<int>(); // OK
shared_ptr<int> p_int3 = allocate_shared(int); // ??
shared_array<int> sh_arr(new int[30]); // OK
shared_array<int> sh_arr2 = make_shared<int[]>(30); // ??
shared_array<int> sh_arr3 = allocate_shared<int[]>(30); // ??
我正在尝试学习正确的语法来初始化上面注释为 // ??
allocate_shared
的用法与 make_shared
类似,只是您将分配器作为第一个参数传递。
boost::shared_ptr<int> p_int(new int);
boost::shared_ptr<int> p_int2 = boost::make_shared<int>();
MyAllocator<int> alloc;
boost::shared_ptr<int> p_int3 = boost::allocate_shared<int>(alloc);
boost::shared_array
没有make
函数,所以只能手动分配内存:
boost::shared_array<int> sh_arr(new int[30]);
但 boost::make_shared
等支持数组类型 - 一种未知大小或一种固定大小 - 在这两种情况下都会返回 boost::shared_ptr
:
boost::shared_ptr<int[]> sh_arr2 = boost::make_shared<int[]>(30);
boost::shared_ptr<int[30]> sh_arr3 = boost::make_shared<int[30]>();
请注意 std::shared_ptr
目前不 支持数组。