Под концепцией выравнивания данных я понимаю, что int и float должны храниться по адресу, который делится на 4 (начальный адрес байта). В соответствии с ним размер приведенной ниже структуры равен 12
typedef struct{
char A;
int B;
float C;
}y;
Я не сомневаюсь в понимании размера указанной выше структуры. Теперь я сомневаюсь в размере нижней структуры.
typedef struct {
double A;
char B;
char C;
}x;
размер x равен 16. в чем я сомневаюсь, так это то, что два используемых символа могут быть выделены в 2 байта, так что вся структура использует 10 байтов данных, а оставшиеся 2 байта можно использовать для выделения другому короткому int, когда он был объявлен Правильно?
Но компилятор использует 16 байтов данных и заполняет остальные 6 ячеек. Я не могу понять, почему он тратит еще 6 ячеек, если он может использовать их для других переменных, когда они объявлены ?. Может ли кто-нибудь помочь мне понять вышеупомянутую концепцию? (Я предполагаю размер int, float и double как 4,4,8 байта соответственно.)