Condividi tramite


Avviso C6398

L'indirizzo di un campo non può essere null definito in 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

struct A { int* x; };

bool hasNullField(A *a)
{  
    return &a->x == nullptr; // C6398 reported here.
}

Per risolvere questo problema, verificare se l'uso di unario & è intenzionale:

struct A { int* x; };

bool hasNullField(A *a)
{  
    return a->x == nullptr; // no C6398 reported here.
}

Vedi anche

C6397