次の方法で共有


警告 C6397

address-of 演算子は、明確に定義されたコードでは null ポインターを返すことができません

解説

address-of 演算子は、そのオペランドのアドレスを返します。 この値は nullptr と決して比較しないでください。

  • フィールドの address-of が nullptr になるのは、ベース ポインターが nullptr で、フィールドがゼロ オフセットにある場合のみです (&p->field == nullptrp == nullptr を意味します)。 この場合、式を簡略化する必要があります。
  • それ以外の場合は、コード内に未定義の動作がない限り、単項 & 演算子の値を nullptr にすることはできません (&v == nullptr は常に false と評価されます)。

bool isNull(int *a)
{  
    return &a == nullptr; // C6397 reported here.
}

この問題を解決するには、単項 & の使用が意図的かどうかを再確認します。

bool isNull(int *a)
{  
    return a == nullptr; // no C6397 reported here.
}

関連項目

C6398