У меня есть явно заданная структура:
typedef struct
{
unsigned long A : 4;
unsigned long B : 12;
union
{
unsigned long C1 : 8;
unsigned long C2 : 8;
unsigned long C3 : 8;
};
unsigned long D : 8;
}FooStruct;
Общий размер этой структуры в теории должен составлять 32 бита (4 байта). Тем не менее, я получаю 12-байтовый размер, используя sizeof
, поэтому здесь должно произойти некоторое заполнение и выравнивание.
Я просто не понимаю, почему и где. Может кто-нибудь объяснить мне, как эта структура занимает 12 байтов в памяти?