结构内存分配,内存分配应为4的倍数

muk*_*udi 0 c memory struct

struct x
{
  char b;
  short s;
  char bb;
};


int main()
{
 printf("%d",sizeof(struct x));
}
Run Code Online (Sandbox Code Playgroud)

输出为:6

我在32位编译器上运行此代码.输出应该是8个字节.

我的解释 - > 1. Char需要1个字节,下一个short需要2的倍数,所以short创建1的填充并占用2个字节,这里已经分配了4个字节.现在唯一的左边的char成员需要1个字节但是因为内存分配是4的倍数所以总内存给出的是8个字节.

Ste*_*ner 5

结构的对齐要求是具有最大对齐的成员的对齐要求.这里的最大对齐是short可能的2.因此,两个b,两个s,两个bb给6.