我有一个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);
}
答案 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删除旧的已分配数组,并使用新分配的数组进行交换。
编辑:忽略这个答案,它没有解决他的问题