Qu'arrive-t-il à un pointeur si vous libérez un objet appartenant à auto_ptr mais que vous ne l'attribuez pas à un pointeur brut? Il semble que ce soit censé être supprimé, mais il n'a jamais eu l'occasion de le faire. Alors, est-ce qu'il se fuit "dans la nature"?auto_ptr libéré sans affecter sa valeur de retour
void usingPointer(int* p);
std::auto_ptr<int> point(new int);
*point = 3;
usingPointer(point.release());
Remarque: Je n'utilise plus auto_ptr, j'utilise maintenant tr1 :: shared_ptr. Cette situation m'a juste rendu curieux.
Changement * "Alors ça se fuit" dans la nature "?" * À * "Alors ça se libère **" dans la nature "?" * Et vous aurez votre réponse, et le inspiration derrière le nom. :) Oui, 'release''ing soulage le' auto_ptr' de toutes les tâches de gestion. – GManNickG
'usingPointer' * pourrait * le supprimer dans cet exemple. Cependant, quand vous voulez un pointeur simple tout en laissant le pointeur intelligent gérer l'objet, vous utiliserez 'point.get()' (aussi avec 'shared_ptr') – UncleBens