0

我有一个 shared_array: boost::shared_array myarr(new char[m_length]);

我想重新分配数组。我想创建一个具有所需大小的新 shared_array 并使用交换提升方法,但这也会复制引用计数。你有别的想法吗?

//new_length>m_length
void func(boost::shared_array<char> &myarr,int new_length)
{
       boost::shared_array<char> new_arr(new char[new_length]);
       myarr.swap(new_arr);
}
4

2 回答 2

2

为什么不直接使用 a boost::shared_ptr<std::vector<char> >?让标准库处理大小调整。

(事实上​​,根据你最初使用 shared_array 的原因,你很可能只使用 std::vector 并小心地通过引用传递它。)

于 2010-12-06T18:47:20.637 回答
1

boost::shared_array::reset 应该可以解决问题

myarr.reset(new char[new_length]);

boost::shared_array::reset 删除旧分配的数组,将其与新分配的数组交换。

编辑:忽略这个答案,它不能解决他的问题

于 2010-12-06T18:42:16.180 回答