Używam Code :: Blocks IDE z kompilatorem GNU GCC.C/C++: Pakowanie lub dopełnianie danych w struct
struct test
{
char a;
char e;
char f;
char b;
char d;
};
sizeof(test)
powraca 5
.
czytałem tej odpowiedzi: Why isn't sizeof for a struct equal to the sum of sizeof of each member?
Jak to się stało nie ma wyściółka po ostatnim char
, tak że sizeof(test)
powraca 6
lub 8
? Jest jeszcze mnóstwo pytań, które mógłbym zadać po dodaniu short
i int
itd. Ale myślę, że to pytanie jest na razie dobre. Czy dopełnienie nie ułatwiłoby procesorowi pracy z strukturą?
OK, więc powiedzmy, że mój rozmiar słowa to 4 bajty. Załóżmy, że mam tablicę 'test stuff [1000]'. Mój procesor czyta pojedyncze "testowe" takie jak 'char-char-char-char char-pad-pad-pad'. Czy tablica w pamięci nie musi być również sformatowana w ten sposób? – newprogrammer
@newprogrammer No. Będzie to 5000 bajtów, bez dopełnienia między elementami tablicy, członków struct. – asaelr
@newprogrammer: W twojej strukturze nie ma "słów", więc dopasowanie do "słowa" nie ma znaczenia. –