Re: Выравнивание данных и размер структур
От: lis_asm  
Дата: 24.11.19 16:35
Оценка:
Здравствуйте, DiZSl, Вы писали:


DZS>class CTest

DZS>{
DZS>private:
DZS> int a;
DZS> char b;
DZS> int c;
DZS>};

Структура вообще коряво сделана. Без выравниваний гарантировано на чтение числа будет тратиться неско циклов шины. Нужно вначале размещать большие (в данном случае a, c), потом маленькие (в данном случае b). Т.к. все поля максимум по 4 байта, выравниваться будет максимум по 4 (даже если задать 16). Чтоб не было проблем, проще сделать так:

class CTest
{
private:
int a;
int c;
char b;
char reserved[3];
};

Структура будет 12 байт, и никакие выравнивания ее не поменяют.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.