Двойное выравнивание

После обсуждения сэта почтаЯ понял, что основной причиной выравнивания элементов структуры является производительность (и некоторые архитектурные ограничения).

Если мы будем исследовать Microsoft (Visual C ++), Borland / CodeGear (C ++ - Builder), Digital Mars (DMC) и GNU (GCC) при компиляции для 32-битной x86: выравнивание дляint 4 байта и еслиint не выровнен, может случиться так, что будут прочитаны 2 ряда банков памяти.

Мой вопрос, почему бы не сделатьdouble быть выровненными также 4 байта? 4 байта выровненыdouble также вызовет 2 строки чтения банков памяти ....

Например, в следующем примере, так какdouble выровнен по 8, фактический размер структуры будетsizeof(char) + (alignment for double padding) + sizeof(int) = 20 bytes.

typedef struct structc_tag{
    char        c;
    double      d;
    int         s;
} structc_t;

Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос