Aracılığıyla paylaş


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 nullptrkarşı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 == nullptranlamı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 olamaz nullptr (&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.
}

Ayrıca bkz.

C6397