struct example1
{
short a;
long b;
};
struct example2
{
char c;
example1 struct1; ---------------这里structur1就是一个自定义类型的变量,它的自身对齐长度为struct example1的有效对齐长度4,它所占内存为sizeof(t example1)的长度
short e;
}
int main(int argc,char*argv[])
{
example2 e2;
int d = (unsigned int)&e2.struct1 - (unsigned int)&e2.c;
printf("%d,%d,%d\n", sizeof(example1),sizeof(example2),d);
}
8bytes 对齐时,结果为:
8,16,4
内存分布为连续内存:
<-------4bytes------>
example2 ---->-------------------------
| c | 补0 |
| | |
example1----->-------------------------
|a | 补0 |
| | |
---------------------------
| b |
| |
--------------------------
|e | 补0 |
| | |