Partager via


Avertissement C6397

L’opérateur d’adresse ne peut pas retourner null le 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 nullptr que si le pointeur de base était nullptr et que le champ est à l’offset zéro (&p->field == nullptr implique p == nullptr). Dans ce cas, l’expression doit être simplifiée.
  • Dans d’autres cas, la valeur de l’opérateur & unaire ne peut pas être nullptr, sauf s’il existe un comportement non défini dans le code (&v == nullptr prend toujours la valeur false).

Exemple

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.
}

Voir aussi

C6398