70.1.1.1. СТРУКТУРЫ И ВЫРАВНИВАНИЕ
THIS SECTION IS UNDER CONSTRUCTION
Выравнивание влияет на структуры:
Пусть у нас есть структура типа:
struct A
{
char c; // 1 byte integer
long long l; // 8 byte integer
};
в зависимости от выравнивания мы можем иметь:
Для модели ILP32:
BYTE 0 1 2 3
+---+---+---+---+ Выравнивание = 1
+00 | c | l |
+---+---+---+---+ Смещение(l) = +0001
+04 | l | Размер(A) = 9 bytes
+---+---+---+---+
+08 | l |
+---+
BYTE 0 1 2 3
+---+---+---+---+ Выравнивание = 4
+00 | c |XXXXXXXXXXX|
+---+---+---+---+ Смещение(l) = +0004
+04 | l | Размер(A) = 12 bytes
+---+---+---+---+
+08 | l |
+---+---+---+---+
BYTE 0 1 2 3
+---+---+---+---+ Выравнивание = 8
+00 | c |XXXXXXXXXXX|
+---+---+---+---+
+04 |XXXXXXXXXXXXXXX|
+---+---+---+---+ Смещение(l) = +0008
+08 | l | Размер(A) = 16 bytes
+---+---+---+---+
+0C | l |
+---+---+---+---+
Index Prev Next