Compartir a través de


Advertencia C6397

El operador address-of no puede devolver un puntero null en código bien definido

Comentarios

El operador address-of devuelve la dirección de su operando. Este valor nunca debe compararse con nullptr:

  • La dirección de un campo solo puede ser nullptr si el puntero base es nullptr y el campo está en el desplazamiento cero (&p->field == nullptr implica p == nullptr). En este caso, la expresión debe simplificarse.
  • En cualquier otro caso, el valor del operador unario & no puede ser nullptr a menos que haya un comportamiento indefinido en el código (&v == nullptr siempre se evalúa como false).

Ejemplo

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

Para corregir este problema, compruebe si el uso del unario & era intencional:

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

Consulte también

C6398