Leer en inglés

Compartir a través de


Advertencia C6334

sizeof el operador aplicado a una expresión con un operador puede producir resultados inesperados

Comentarios

El operador sizeof, cuando se aplica a una expresión, produce el tamaño del tipo de la expresión resultante.

Nombre de análisis de código: SIZEOFEXPR

Ejemplo

El código siguiente genera esta advertencia. Dado que a - 4 es una expresión, sizeof devolverá el tamaño del puntero resultante, no el tamaño de la estructura que se encuentra en ese puntero:

C++
void f( )
{
    size_t x;
    char a[100];
    x = sizeof(a - 4);
    assert(x == 96);  //assert fails since x == sizeof(char*)
}

Para corregir esta advertencia, asegúrese de que está trabajando con el valor devuelto de sizeof, no el argumento para ella:

C++
void f( )
{
    size_t x;
    char a[100];
    x = sizeof(a) - 4;
    assert(x == 96);  //assert succeeds
}

Consulte también

sizeof (Operador)