Przydzielanie pamięci - kompilator.

0

Mam problem z wyznaczeniem pamięci podanej struktury:

struct {
unisgned int ID;
union
{
double x;
int tab [4];
} u;
char text [4];
} w;

przyjmując, że char - 1 bajt, int - 4 bajty, double - 8 bajtów.
Przeczytałem informacje, że w zależności od tego czy kompilator przydziela pamięć bez odstępów, czy z nimi, to różnica w rozmiarze jest inna.
I teraz są dwie odpowiedzi

32 bajty, jeżeli z odstępami.
24 bajty, jeżeli bez odstępów.

Mógłby ktoś wytłumaczyć jak to wygląda w pamięci z tymi odstępami?

0

Wciąż nie jestem w stanie stwierdzić dlaczego ten rozmiar jest o tyle mniejszy, licząc sumę ich nie wiem jakim cudem można osiągnąć 24 bajty.

0

int - 4 bajty
unia double/4int = max(8, 16) bajtów
char[4] = 4 bajty
4+16+4 = 24.

1 użytkowników online, w tym zalogowanych: 0, gości: 1