Cantor wrote:
> typedef struct {
> short a;
> short b;
> short c;
> double d;
> double e;
> double f;
> } st;
А если так:
#pragma push()
#pragma pack(1)
typedef struct {
short a;
short b;
short c;
double d;
double e;
double f;
} st;
#pragma pop()
?
> Если посчитать размер структуры, получается 30 байт. Но! Функция
> sizeof(st) возвращает значение 32. Если из структуры убрать все даблы,
> то sizeof вернет вполне адекватные 6 байт. Не то, чтоб мне было жалко 2
> байта, а все-таки в чем секрет?
В выравнивании. Обращение к выравненым данным на х86 происходит намного
быстрее, чем к невыравненым. А на других архитектурах неправильное
выравнивание вообще вызывает аппаратную ошибку.
Posted via RSDN NNTP Server 2.0