相关疑难解决方法(0)

为什么没有std :: shared_ptr <T []>专门化?

该标准提供了一个模板特化std::unique_ptr,正确调用delete[]其析构函数:

void func()
{
   std::unique_ptr< int[] > arr(new int[10]);

   .......
}
Run Code Online (Sandbox Code Playgroud)

由于std::shared_ptr这种专业化不可用,因此有必要提供一个正确调用的删除器delete[]:

void func()
{
    // Usage
    shared_ptr array (new double [256], [](double* arr) { delete [] arr; } ); 

    ..............
}
Run Code Online (Sandbox Code Playgroud)

这只是一个疏忽吗?(以同样的方式存在std::copy_if)或是否有原因?

c++ shared-ptr c++11

64
推荐指数
1
解决办法
9851
查看次数

TR1共享阵列

我很难在TR1文档中找到有关共享数组的参考资料.Boost文档非常明确,C++"new"和"new []"表达式之间存在显着差异.shared_ptr模板用于正确保存指向使用"new"创建的动态分配的对象的指针.shared_array模板用于使用"new []"正确保存指向动态分配的数组的指针.

我正在更新一些代码以使用TR1 shared_ptr模板和相关函数,但我没有发现shared_array.TR1 shared_ptr实现是否区分"new"和"new []",并正确销毁这些指针?据我所知,从TR1规格看,它似乎没有.如果是这种情况,我是否仍应使用boost shared_array模板进行"new []"样式分配?

c++ boost tr1

15
推荐指数
1
解决办法
6906
查看次数

标签 统计

c++ ×2

boost ×1

c++11 ×1

shared-ptr ×1

tr1 ×1