Mögliches Duplikat:
Inkonsistenz der C-Strukturgrößen
Für das folgende Programm möchte ich die Größe einer Struktur ermitteln. Es stellt sich jedoch heraus, dass die Größe der Struktur 12 ist und nicht 4*4=16
. Bedeutet dies, dass jedes Element auf eine andere Pad-Nummer ausgerichtet werden kann? int
mit 4 und short
mit 2, aber in diesem Fall sollte char 1 haben.
Vielen Dank.
#include <stdio.h>
struct test{
int a;
char b;
short c;
int d;
};
struct test A={1,2,3,4};
int main()
{
printf("0X%08X\n",&A.a);
printf("0X%08X\n",&A.b);
printf("0X%08X\n",&A.c);
printf("0X%08X\n",&A.d);
printf("%d\n",sizeof(A));
}
Und das Ergebnis ist:
0X00424A30
0X00424A34
0X00424A36
0X00424A38
12