Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Operátor adresy nemůže vrátit
nullukazatel 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
nullptrpouze v případě, že bylnullptrzákladní ukazatel a pole je na nulovém posunu (&p->field == nullptrnapovídá).p == nullptrV 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 == nullptrvždy se vyhodnotí jako nepravda).
Příklad
Následující příklad generuje C6397:
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.
}