Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'indirizzo di un campo non può essere
nulldefinito 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
nullptrsolo se il puntatore di base eranullptre il campo è in corrispondenza dell'offset zero (&p->field == nullptrimplicap == nullptr). In questo caso, l'espressione deve essere semplificata. - In altri casi, il valore dell'operatore unario
&non può esserenullptra meno che non esista un comportamento indefinito nel codice (&v == nullptrrestituisce sempre false).
Esempio
L'esempio seguente genera l'errore C6398:
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.
}