Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Adres pola nie może być
nullw dobrze zdefiniowanym kodzie
Uwagi
Operator address-of zwraca adres operandu. Ta wartość nigdy nie powinna być porównywana z wartością nullptr:
- Adres pola może być
nullptrtylko wtedy, gdy wskaźnik podstawowy byłnullptr, a pole ma zero przesunięcia (&p->field == nullptrimplikujep == nullptr). W takim przypadku wyrażenie powinno zostać uproszczone. - W innych przypadkach wartość operatora jednoargumentowego
&nie może byćnullptr, chyba że w kodzie występuje niezdefiniowane zachowanie (&v == nullptrzawsze daje wartość false).
Przykład
Poniższy przykład generuje kod C6398:
struct A { int* x; };
bool hasNullField(A *a)
{
return &a->x == nullptr; // C6398 reported here.
}
Aby rozwiązać ten problem, sprawdź dokładnie, czy użycie jednoargumentowego & było zamierzone:
struct A { int* x; };
bool hasNullField(A *a)
{
return a->x == nullptr; // no C6398 reported here.
}