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 Basiszeigernullptr
war und das Feld sich am Nulloffset befindet (&p->field == nullptr
impliziertp == nullptr
). In diesem Fall sollte der Ausdruck vereinfacht werden. - In anderen Fällen kann der Wert des unären
&
-Operators nichtnullptr
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.
}