Warnung C6398

Die Adresse eines Felds darf in klar definiertem Code nicht null sein.

Hinweise

Der address-of-Operator gibt die Adresse seines Operanden zurück. Dieser Wert sollte niemals mit nullptr verglichen werden:

  • Die Adresse eines Felds kann nur nullptr sein, wenn der Basiszeiger nullptr war und das Feld sich am Nulloffset befindet (&p->field == nullptr impliziert p == nullptr). In diesem Fall sollte der Ausdruck vereinfacht werden.
  • In anderen Fällen kann der Wert des unären &-Operators nicht nullptr sein, es sei denn, es gibt ein nicht definiertes Verhalten im Code (&v == nullptr wird immer als „false“ ausgewertet).

Beispiel

struct A { int* x; };

bool hasNullField(A *a)
{  
    return &a->x == nullptr; // C6398 reported here.
}

Um dieses Problem zu beheben, überprüfen Sie noch einmal, ob die Verwendung des unären &-Operators beabsichtigt war:

struct A { int* x; };

bool hasNullField(A *a)
{  
    return a->x == nullptr; // no C6398 reported here.
}

Siehe auch

C6397