Warnung C6397

Die Adresse des Operators kann keinen null-Zeiger im klar definierten Code zurückgeben.

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

bool isNull(int *a)
{  
    return &a == nullptr; // C6397 reported here.
}

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

bool isNull(int *a)
{  
    return a == nullptr; // no C6397 reported here.
}

Siehe auch

C6398