Почему gcc возвращает 13 как размер следующего класса?Мне кажется, что мы должны получить e (4 байта) + d (4 байта) + 1 байт (для a и b) = 9 байтов.Если это было выравнивание, разве большинство 32-битных систем не выровнены по границам 8 байтов?
class A {
unsigned char a:1;
unsigned char b:4;
unsigned int d;
A* e;
} __attribute__((__packed__));
int main( int argc, char *argv[] )
{
cout << sizeof(A) << endl;
}
. / A.out 13