Aviso C6397
O operador de endereço de não pode retornar um ponteiro
null
em um código bem definido
Comentários
O operador address-of retorna o endereço do operando dele. Este valor nunca deve ser comparado com nullptr
:
- O address-of de um campo só pode ser
nullptr
se o ponteiro base eranullptr
e o campo está no deslocamento zero (&p->field == nullptr
implicap == nullptr
). Nesse caso, a expressão deve ser simplificada. - Em quaisquer outros casos, o valor do operador unário
&
não pode sernullptr
, a menos que haja um comportamento indefinido no código (&v == nullptr
sempre é avaliado como falso).
Exemplo
bool isNull(int *a)
{
return &a == nullptr; // C6397 reported here.
}
Para corrigir esse problema, verifique se o uso do unário &
foi intencional:
bool isNull(int *a)
{
return a == nullptr; // no C6397 reported here.
}