Sdílet prostřednictvím


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 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

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.
}

Viz také

C6398