Avviso C6397
L'operatore address-of non può restituire
null
il puntatore nel codice ben definito
Osservazioni:
L'operatore address-of restituisce l'indirizzo del relativo operando. Questo valore non deve mai essere confrontato con nullptr
:
- L'indirizzo di un campo può essere
nullptr
solo se il puntatore di base eranullptr
e il campo è in corrispondenza dell'offset zero (&p->field == nullptr
implicap == nullptr
). In questo caso, l'espressione deve essere semplificata. - In altri casi, il valore dell'operatore unario
&
non può esserenullptr
a meno che non esista un comportamento indefinito nel codice (&v == nullptr
restituisce sempre false).
Esempio
bool isNull(int *a)
{
return &a == nullptr; // C6397 reported here.
}
Per risolvere questo problema, verificare se l'uso di unario &
è intenzionale:
bool isNull(int *a)
{
return a == nullptr; // no C6397 reported here.
}