Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur d’adresse ne peut pas retourner
nullle pointeur dans du code bien défini
Notes
L'opérateur d'adresse retourne l'adresse de son opérande. Cette valeur ne doit jamais être comparée à nullptr :
- L’adresse d’un champ ne peut être
nullptrque si le pointeur de base étaitnullptret que le champ est à l’offset zéro (&p->field == nullptrimpliquep == nullptr). Dans ce cas, l’expression doit être simplifiée. - Dans d’autres cas, la valeur de l’opérateur
&unaire ne peut pas êtrenullptr, sauf s’il existe un comportement non défini dans le code (&v == nullptrprend toujours la valeur false).
Exemple
L’exemple suivant génère l’erreur C6397 :
bool isNull(int *a)
{
return &a == nullptr; // C6397 reported here.
}
Pour résoudre ce problème, vérifiez deux fois si l’utilisation d’unaire & était intentionnelle :
bool isNull(int *a)
{
return a == nullptr; // no C6397 reported here.
}