Compartir a través de


Advertencia C6398

La dirección de un campo no puede ser 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

struct A { int* x; };

bool hasNullField(A *a)
{  
    return &a->x == nullptr; // C6398 reported here.
}

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

struct A { int* x; };

bool hasNullField(A *a)
{  
    return a->x == nullptr; // no C6398 reported here.
}

Consulte también

C6397