Upozornění C6398
Adresa pole nemůže být
null
v dobře definovaném kódu.
Poznámky
Operátor address-of vrátí adresu svého operandu. Tato hodnota by se nikdy neměla porovnávat s nullptr
:
- Adresa pole může být
nullptr
pouze v případě, že bylnullptr
základní ukazatel a pole je na nulovém posunu (&p->field == nullptr
napovídá).p == nullptr
V tomto případě by měl být výraz zjednodušený. - V jiných případech hodnota unárního
&
operátoru nemůže býtnullptr
, pokud v kódu neexistuje nedefinované chování (&v == nullptr
vždy se vyhodnotí jako nepravda).
Příklad
struct A { int* x; };
bool hasNullField(A *a)
{
return &a->x == nullptr; // C6398 reported here.
}
Pokud chcete tento problém vyřešit, pečlivě zkontrolujte, jestli bylo použití unárních &
záměrů:
struct A { int* x; };
bool hasNullField(A *a)
{
return a->x == nullptr; // no C6398 reported here.
}