Upozornění C6397
Operátor adresy nemůže vrátit
null
ukazatel 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
bool isNull(int *a)
{
return &a == nullptr; // C6397 reported here.
}
Pokud chcete tento problém vyřešit, pečlivě zkontrolujte, jestli bylo použití unárních &
záměrů:
bool isNull(int *a)
{
return a == nullptr; // no C6397 reported here.
}