Possible en double:
Why doesn't delete set the pointer to NULL?Pourquoi l'opérateur de suppression C++ ne définit pas de pointeur sur NULL?
Y at-il un but pour pointeur vers la mémoire désallouée?
Possible en double:
Why doesn't delete set the pointer to NULL?Pourquoi l'opérateur de suppression C++ ne définit pas de pointeur sur NULL?
Y at-il un but pour pointeur vers la mémoire désallouée?
Non, il n'y a pas de réelle utilité pour le laisser fixé à la valeur d'origine, autre que de montrer comment les gens sont incompétents à l'écriture de code :-)
Il suit les traditions de C en ce que vous êtes censé savoir que fais tu. Le coût de la mise à zéro des pointeurs libérés par le compilateur a été jugé trop élevé dans les jours C et cela a été reporté sur C++ avec delete
. Si vous codez correctement, le fait que le compilateur définisse le pointeur sur NULL est un gaspillage, puisque vous le définissez sur autre chose ou ne l'utilisez pas à nouveau.
Si vous vraiment voulez rendre votre code plus sûr, vous feriez quelque chose comme (en C):
void myFree (void **pMem) {
free (**pMem);
*pMem = NULL;
}
myFree (&x);
au lieu de simplement:
free (x);
Mais, si vous Je vais aller à ce niveau (et introduire une telle abomination), il suffit de passer à Java et d'en finir avec, alors vous n'avez plus à vous soucier de la gestion manuelle de la mémoire.
Ou utilisez des pointeurs intelligents. :) – GManNickG
C++ fait exactement ce que vous lui dites de faire. Vous n'avez pas défini le pointeur sur null, vous avez supprimé la mémoire vers laquelle pointe le pointeur. Pourquoi ne gaspillez-vous pas l'étape supplémentaire de la mettre à null (pour des raisons de performance), si vous n'avez pas besoin de le faire?
Que faire si c'est un pointeur const?
Exact duplicate of [Pourquoi ne pas supprimer définir le pointeur sur NULL?] (Http://stackoverflow.com/questions/704466/why-doesnt-delete-set-the-pointer-to-null) –
Oups . Je n'ai pas vu ça. – Vanuan
Voir aussi http://stackoverflow.com/questions/1931126/is-it-good-practice-to-null-a-pointer-after-deleting-it –