Uyarı C6398
Bir alanın adresi iyi tanımlanmış kodda olamaz
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
struct A { int* x; };
bool hasNullField(A *a)
{
return &a->x == nullptr; // C6398 reported here.
}
Bu sorunu düzeltmek için, birli &
kullanımının kasıtlı olup olmadığını bir kez daha denetleyin:
struct A { int* x; };
bool hasNullField(A *a)
{
return a->x == nullptr; // no C6398 reported here.
}