почему заполнение в этом случае не происходит?

По моим сведениям, по умолчанию будет выполнено 4-байтовое выравнивание. сказать

typedef struct { int data7; unsigned char data8; //3 -bytes will be added here. }Sample1; 

поэтому sizeof(Sample1) будет 8.

Но для следующей структуры, почему заполнение не произошло ?.

 typedef struct { unsigned char data1; unsigned char data2; unsigned char data3; unsigned char data4; unsigned char data5; unsigned char data6; }Sample2; 

Но sizeof (Sample2) равен 6. Этот Sample2 не является 4-байтовой выровненной структурой?

РЕДАКТИРОВАТЬ::

Согласно Wiki

Согласование данных означает, что данные смещены в памяти, равные нескольким кратным размеру слова, что увеличивает производительность системы из-за того, как процессор обрабатывает память.

Но члены Sample2 не будут выровнены по кратным двум правильным?

Благодарю.

Ни одно из полей в вашей второй структуре не требует 4-байтного выравнивания. unsigned char требуется только 1-байтовое выравнивание. Поэтому нет необходимости фактически выровнять его до 4 байтов.

Структуры обычно выравниваются только с максимальным выравниванием всех полей.

data7 – это 4-байтовый элемент, поэтому компилятор обычно пытается выровнять его с адресом, кратным 4.

data1 – однобайтовый элемент, поэтому компилятор не будет пытаться согласовать его с какой-либо конкретной границей (т. е. от этого не будет никакого реального эффекта).

Нет, в типичной реализации Sample2 не является структурой с 4-мя нотами. Это 1-байтовая выровненная структура.

В типичной реализации требование выравнивания всей структуры рассчитывается как максимум требования к выравниванию для его отдельных членов. Вот почему ваш Sample1 имеет требования к выравниванию int (4 на вашей платформе), а ваш Sample2 имеет требование выравнивания unsigned char , которое равно 1.

Для Char требуется 1 байт. Максимальный тип данных – char, который является одним байтовым выравниванием, поэтому вы получаете размер как «6».

Вы можете проверить этот сайт для большего понимания. http://www.geeksforgeeks.org/archives/9705 . Они объяснили это подробно.