Pourquoi la suppression ne définit pas automatiquement le pointeur sur NULL
Malgré ses avantages potentiels dans la prévention des plantages liés au pointeur non valide, la norme C ne le fait pas exigent que l'opérateur de suppression définisse automatiquement le pointeur sur NULL après la désallocation de la mémoire. Les raisons de cette décision sont multiples.
Performances
L'ajout d'une instruction pour définir le pointeur sur NULL pourrait potentiellement ralentir les performances de l'opération de suppression. Bien que cela puisse être négligeable pour la plupart des applications, cela pourrait avoir un impact sur les systèmes dont les performances sont critiques.
Constantes
Les pointeurs Const présentent un défi potentiel. Définir un pointeur const sur NULL violerait son immuabilité, conduisant à un comportement indéfini. Cependant, la norme aurait pu prévoir un cas particulier pour les pointeurs const, leur permettant d'être définis sur NULL.
Flexibilité des arguments
La norme permet explicitement que l'argument de suppression soit une rvalue, pas seulement une lvalue. Par exemple, supprimer un tableau implique de spécifier le nom du tableau comme argument : delete [] array;. Dans de tels cas, il n'est pas possible de définir le pointeur sur NULL car il ne pointe pas vers un emplacement mémoire valide après la suppression.
Autres considérations
Bjarne Stroustrup, le créateur de C reconnaît les avantages potentiels de la définition automatique de NULL lors de la suppression, mais note que les implémenteurs n'ont pas largement adopté cette pratique. Il souligne également la nécessité pour les programmeurs d'être vigilants et de s'assurer que les pointeurs sont correctement traités après la désallocation.
En résumé, même si la définition automatique de NULL par suppression aurait des avantages, la norme C a choisi de ne pas l'imposer en raison de les problèmes de performances, la nécessité de s'adapter à certains cas et l'importance de la responsabilité du programmeur dans la gestion des pointeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!