Maison > développement back-end > C++ > Le déréférencement d'un pointeur NULL permet-il d'obtenir un comportement défini par référence en C ?

Le déréférencement d'un pointeur NULL permet-il d'obtenir un comportement défini par référence en C ?

DDD
Libérer: 2024-12-07 06:59:12
original
236 Les gens l'ont consulté

Is Dereferencing a NULL Pointer to Obtain a Reference Defined Behavior in C  ?

Déréférencement du pointeur NULL pour référence : interprétation et norme

En C , le code suivant soulève la question de savoir ce que dicte la norme :

int* ptr = NULL;
int& ref = *ptr;
int* ptr2 = &ref;
Copier après la connexion

Plus précisément, est-il permis de déréférencer un pointeur NULL pour obtenir une référence, et quel est le résultat d'une telle opération ?

Interprétation standard

Selon la norme C, le déréférencement d'un pointeur NULL est considéré comme un comportement indéfini. Ceci est explicitement indiqué dans la section 8.3.2/4 de la norme :

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 serait de liez-le à « l'objet » obtenu en déréférençant un pointeur nul, ce qui provoque un comportement indéfini.

Implémentation Implications

En pratique, cependant, de nombreux compilateurs implémentent ce comportement en définissant le résultat sur NULL. Cela signifie que ptr2 dans l'extrait de code fourni se verrait attribuer la valeur NULL.

Interprétation du compilateur

Il est important de noter que le comportement décrit ci-dessus n'est pas garanti par la norme et peut varier selon les différents compilateurs et plates-formes. Par exemple, certains compilateurs peuvent déclencher une exception ou effectuer d'autres actions spécifiques à la plate-forme lors du déréférencement d'un pointeur NULL.

Exception spécifique

Une exception à cette règle est l'utilisation de l'opérateur sizeof sur un pointeur NULL. Dans ce contexte, le déréférencement ne se produit pas réellement et sizeof peut être utilisé pour déterminer la taille du type sans provoquer de comportement indéfini.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal