jak rozmiar struktury zmienia się w zależności od różnych typów danych
Korzystam z 32-bitowego systemu Linux i kompilatora GCC.
Próbowałem z trzema różnymi typami konstrukcji. w pierwszej strukturze zdefiniowałem tylko jednąchar
zmienna. rozmiar tej struktury wynosi 1, co jest poprawne.
w drugiej strukturze zdefiniowałem tylko jednąint
zmienna. tutaj rozmiar struktury pokazuje 4, co również jest poprawne.
ale w trzeciej strukturze, gdy ją zdefiniowałemchar
i jedenint
oznacza to, że całkowity rozmiar powinien wynosić 5, ale wynik jest wyświetlany 8. Czy ktoś może wyjaśnić, jak przypisana jest struktura?
typedef struct struct_size_tag
{
char c;
//int i;
}struct_size;
int main()
{
printf("Size of structure:%d\n",sizeof(struct_size));
return 0;
}
Wyjście: Rozmiar struktury: 1typedef struct struct_size_tag
{
//char c;
int i;
}struct_size;
int main()
{
printf("Size of structure:%d\n",sizeof(struct_size));
return 0;
}
Wyjście: Rozmiar struktury: 4typedef struct struct_size_tag
{
char c;
int i;
}struct_size;
int main()
{
printf("Size of structure:%d\n",sizeof(struct_size));
return 0;
}
Wydajność:
Rozmiar struktury: 8