Advertencia C6334
sizeof
el operador aplicado a una expresión con un operador puede producir resultados inesperados
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
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:
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:
void f( )
{
size_t x;
char a[100];
x = sizeof(a) - 4;
assert(x == 96); //assert succeeds
}