boost :: réaffectant shared_array
Question
J'ai un shared_array: boost :: shared_array myarr (nouveau char [m_length]);
Je voudrais réattribuer le tableau. Je pensais à la création d'une nouvelle shared_array avec la taille voulu et en utilisant la méthode d'amplification d'échange mais cela copiera le nombre de referance ainsi. Avez-vous une autre idée?
//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);
}
La solution
Pourquoi ne pas utiliser juste la place d'un boost::shared_ptr<std::vector<char> >
? Laissez le redimensionnement de la poignée bibliothèque standard.
(En fait, selon la raison pour laquelle vous utilisiez shared_array en premier lieu, vous pourriez bien vous en sortir avec juste en utilisant un std :: vecteur, et en passant par référence soigneusement autour.)
Autres conseils
boost :: shared_array :: reset devrait faire l'affaire
myarr.reset(new char[new_length]);
boost :: shared_array :: reset supprime l'ancien tableau alloué, en échangeant avec celui nouvellement attribué.
Edit: Ignorer cette réponse, il ne résout pas son problème