struct A // sizeof (A) == 12
{
char b;
int a;
char c;
};
struct B // sizeof (B) == 8
{
char b;
char c;
int a;
};
这是编译器的事情,把分配内存的最小单位划分成了4Byte,这是为了寻址更加迅速,牺牲了空间。
结构体A存放b占用了4B,存放a占用了4B,存放c占用了4B;
结构体A存放b、c占用了4B,存放a占用了4B。
有点像磁盘里簇和扇区里的概念了。
本文探讨了编译器如何处理结构体内存对齐的问题,解释了为什么某些结构体成员的布局会导致额外的空间浪费,并通过两个示例结构体A和B来说明这种现象。
struct A // sizeof (A) == 12
{
char b;
int a;
char c;
};
struct B // sizeof (B) == 8
{
char b;
char c;
int a;
};
这是编译器的事情,把分配内存的最小单位划分成了4Byte,这是为了寻址更加迅速,牺牲了空间。
结构体A存放b占用了4B,存放a占用了4B,存放c占用了4B;
结构体A存放b、c占用了4B,存放a占用了4B。
有点像磁盘里簇和扇区里的概念了。
5840
415

被折叠的 条评论
为什么被折叠?