当前位置:  开发笔记 > 编程语言 > 正文

TR1共享阵列

如何解决《TR1共享阵列》经验,为你挑选了1个好方法。

我很难在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 []"样式分配?



1> Brian Neal..:

这是正确的,TR1中没有shared_array.

但是,如果您希望使用此构造函数,则可以提供自己的删除对象来执行"delete []":

template
   shared_ptr(Other* ptr, D dtor);

例如:

template
struct my_array_deleter
{
   void operator()(T* p)
   {
      delete [] p;
   }
};

shared_ptr sp(new int[100], my_array_deleter());


TR1 shared_ptr没有.你总是可以"int*p = sp.get(); p [5] = 42;" 你确定你需要shared_array吗?矢量或字符串通常就足够了.
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有