Compartilhar via


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 era nullptr e o campo está no deslocamento zero (&p->field == nullptr implica p == nullptr). Nesse caso, a expressão deve ser simplificada.
  • Em quaisquer outros casos, o valor do operador unário & não pode ser nullptr, 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.
}

Confira também

C6398