Sdílet prostřednictvím


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 byl nullptr základní ukazatel a pole je na nulovém posunu (&p->field == nullptrnapoví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ýt nullptr , 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.
}

Viz také

C6397