Condividi tramite


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 era nullptr e il campo è in corrispondenza dell'offset zero (&p->field == nullptr implica p == nullptr). In questo caso, l'espressione deve essere semplificata.
  • In altri casi, il valore dell'operatore unario & non può essere nullptr 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.
}

Vedi anche

C6398