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.
Operator address-of nie może zwrócić
nullwskaźnika w 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 C6397:
bool isNull(int *a)
{
return &a == nullptr; // C6397 reported here.
}
Aby rozwiązać ten problem, sprawdź dokładnie, czy użycie jednoargumentowego & było zamierzone:
bool isNull(int *a)
{
return a == nullptr; // no C6397 reported here.
}