重新分配boost :: shared_array

时间:2010-12-06 18:41:07

标签: c++ boost realloc

我有一个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);
}

2 个答案:

答案 0 :(得分:2)

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

(事实上,根据您首先使用shared_array的原因,您可能只需使用std :: vector,并通过引用仔细传递它。)

答案 1 :(得分:1)

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

myarr.reset(new char[new_length]);

boost :: shared_array :: reset删除旧的已分配数组,并使用新分配的数组进行交换。

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