¿Por qué sizeof para una estructura no es igual a la suma de sizeof de sus miembros?
¡Hola, colegas! Soy nuevo en C++ y recientemente me encontré con un comportamiento inesperado. Tengo una estructura simple:
```cpp
struct MyStruct {
char a; // 1 byte
int b; // 4 bytes
short c; // 2 bytes
};
```
Lógicamente, se podría suponer que sizeof(MyStruct) será 1 + 4 + 2 = 7 bytes. Pero cuando imprimo el tamaño con `std::cout`, ¡el compilador muestra 12 bytes! ¿Por qué? No estoy usando ninguna función virtual ni herencia. Lo probé en diferentes compiladores (GCC, MSVC) y en todos es lo mismo. Además, si cambio el orden de los campos, el resultado cambia. Por ejemplo, si pongo `int` primero, el tamaño se vuelve 8 bytes. ¿Qué magia es esta? ¿Es algún bug del compilador o me estoy perdiendo algo? Expliquen, por favor, cómo funciona sizeof para estructuras y cómo predecir el tamaño real. ¡Gracias de antemano!
<<>>
¿Por qué sizeof para una estructura es mayor que la suma de los tamaños de los campos?
Esto no es un bug, sino una característica del funcionamiento del procesador y del compilador, llamada alineación de memoria.