Выделение памяти

При создании переменной типа структуры:

· память под все элементы структуры выделяется последовательно для каждого элемента;

· для битовых полей память выделяется, начиная с младших разрядов;

· память, выделяемая под битовые поля, кратна байту;

· общая выделяемая память может быть больше, чем сумма размеров полей структуры;

 

Рассмотрим пример выделения памяти под структуру:

struct structA {

char cA;

char sA[2];

float fA;

};

При создании переменной структурного типа:

structA s1;

будет выделено 7 байтов. Элементы структуры будут размещены в памяти в следующем порядке:

 

char cA char sA[2] float fA
             

 

Рассмотрим пример выделения памяти под структуру:

struct structB {

int i1:2;

int i2:3;

int :6;

unsigned int i3:4;

};

При создании переменной структурного типа:

structB s2;

будет выделено 2 байта. Элементы структуры будут размещены в памяти в следующем порядке:

 

Поля   i3 Не доступны i2 i1
Биты
                                 

 

Для целочисленных значений, предусматривающих наличие знакового разряда (например, int), старший левый бит из общего числа битов, выделяемых под данное битовое поле, интерпретируется как знак. Например, битовое значение 11 для поля i1 будет восприниматься как -1, а значение 11 для поля i3 - как 3.