Déréférencement de pointeurs NULL pour les références
La norme C traite explicitement du comportement de déréférencement d'un pointeur NULL pour obtenir une référence. Cette pratique est considérée comme un comportement non défini.
Dans l'exemple fourni :
int* ptr = NULL; int& ref = *ptr; int* ptr2 = &ref;
La tentative de déréférencement du pointeur NULL ptr est considérée comme un comportement non défini. D'après la norme (8.3.2/4 "Références") :
Remarque : en particulier, une référence nulle ne peut pas exister dans un programme bien défini, car la seule façon de créer une telle référence reviendrait à le lier à « l'objet » obtenu en déréférençant un pointeur nul, ce qui provoque un comportement indéfini.
Par conséquent, attribuer une référence à l'objet déréférencé Le pointeur NULL n'est pas valide et le comportement n'est pas bien défini. Le résultat de l'utilisation de ptr2, qui pointe vers la référence obtenue à partir du pointeur NULL déréférencé, est également indéfini.
Une exception à l'interdiction de déréférencer les pointeurs NULL concerne l'utilisation avec l'opérateur sizeof. Dans ce contexte, le pointeur n'est pas réellement évalué, donc son déréférencement ne provoque pas de comportement indéfini. Cependant, cette exception est limitée à la taille de l'opérateur.
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!