Estoy usando Code :: Blocks IDE con el compilador GNU GCC.C/C++: datos de relleno o relleno en una estructura
struct test
{
char a;
char e;
char f;
char b;
char d;
};
sizeof(test)
vuelve 5
.
leí esta respuesta: Why isn't sizeof for a struct equal to the sum of sizeof of each member?
¿Cómo es que no hay ningún relleno después de la última char
, de modo que vuelve sizeof(test)
6
o 8
? Hay muchas más preguntas que podría formular una vez que agregue short
y int
, etc. Pero creo que esta pregunta es buena por ahora. ¿El relleno no facilitaría que el procesador trabaje con la estructura?
Bien, digamos que el tamaño de mi palabra es de 4 bytes. Digamos que tengo una matriz 'prueba cosas [1000]'. Mi procesador lee 'test's individuales como' char-char-char-char char-pad-pad-pad'. ¿No es necesario formatear el arreglo en la memoria de esta manera también? – newprogrammer
@newprogrammer No. Será 5000 bytes, sin relleno entre los miembros de la matriz, de los miembros de la estructura. – asaelr
@newprogrammer: No hay "palabras" en su estructura, por lo que la alineación necesaria para una "palabra" es irrelevante. –