Uyarı C6397
Adres işleci, iyi tanımlanmış kodda işaretçi döndüremiyor
null
Açıklamalar
adres işleci işleneninin adresini döndürür. Bu değer hiçbir zaman ile nullptr
karşılaştırılmamalıdır:
- Bir alanın adresi yalnızca temel işaretçinin olması
nullptr
ve alanın sıfır uzaklığında olması (&p->field == nullptr
anlamına gelirp == nullptr
) olabilirnullptr
. Bu durumda ifade basitleştirilmiş olmalıdır. - Diğer durumlarda, kodda tanımlanmamış bir davranış olmadığı sürece birli
&
işlecin değeri olamaznullptr
(&v == nullptr
her zaman false olarak değerlendirilir).
Örnek
bool isNull(int *a)
{
return &a == nullptr; // C6397 reported here.
}
Bu sorunu düzeltmek için, birli &
kullanımının kasıtlı olup olmadığını bir kez daha denetleyin:
bool isNull(int *a)
{
return a == nullptr; // no C6397 reported here.
}