LINUX.ORG.RU

Размер структуры


0

0

Привет, может кто объяснить следующие;

Система - 32bit.

Есть структура:
struct test
{
long int a;
char b[32];
char c[32];
short d;
};

sizeof(struct test) = 72
sizeof(long int) = 4
sizeof(char[32]) = 32
sizeof(d) = 2

Итого = 4 + 32 + 32 + 2 = 70
Почему sizeof(struct test) = 72 ?

Откуда 2 байта взялись?


Ответ на: комментарий от ates

внимательней читай кернигана-ритчи

anonymous
()
Ответ на: комментарий от ates

Ещё могу сказать, что для выравнивания, часто добавляют в структуру фиктивные элементы, тоесть ими не пользуются, но таким образом достигается выравнивание (это чтобы не полагаться на компилятор, особенно во всяких встраиваемых системах).

Cy6erBr4in ★★★
()
Ответ на: комментарий от Cy6erBr4in

> Ещё могу сказать, что для выравнивания, часто добавляют в структуру фиктивные элементы

Если компилятор не делает этого, может быть на этой архитектуре выравнивание не нужно. Или на таких платформах компилятор бывает совсем глупый?

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Не знаю точно, но на предыдущей работе часто встречал в коде такое (фиктивные члены структур), архитектура там была Power, компилятор... c`шная часть gcc компилировалась, а для ассемблера был какой-то комерческий компиллер.

Cy6erBr4in ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.