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 байта взялись?


Ответ на: Re: Размер структуры от ates

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

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

Cy6erBr4in ★★★ ()
Ответ на: Re: Размер структуры от Cy6erBr4in

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

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

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

Legioner ★★★★★ ()
Ответ на: Re: Размер структуры от Legioner

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

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

Cy6erBr4in ★★★ ()

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

На gcc можно ещё юзать __attribute__((packed)), чтобы небыло выравнивания

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