Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La dirección de un campo no puede ser
nullen 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
nullptrsi el puntero base esnullptry el campo está en el desplazamiento cero (&p->field == nullptrimplicap == nullptr). En este caso, la expresión debe simplificarse. - En cualquier otro caso, el valor del operador unario
&no puede sernullptra menos que haya un comportamiento indefinido en el código (&v == nullptrsiempre se evalúa como false).
Ejemplo
En el ejemplo siguiente se genera la advertencia C6398:
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.
}