Re: странное поведение sizeof
От: Cyberax Марс  
Дата: 08.02.06 20:17
Оценка:
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
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.