//32的系统 边界对齐 一次32位 4个字节
struct Node{
int a;
char b;
char c;
};
struct Node2{
char b;
int a;
char c;
};
int _tmain(int argc, _TCHAR* argv[])
{
printf("%d %d\n",sizeof(Node),sizeof(Node2));
return 0;
}
第一个是8
第二个是12
系统禁止编译器在一个结构的起始位置跳过几个字节来满足边界对齐的要求
因此所有结构的起始位置必须是 结构中边界要求最严格的数据类型所要求的位置
第2个 b要占据4个字节 a占据4字节 c1字节 但是如果后面声明了相同类型的第二个变量,则这个结构占据了12个字节
第一个结构 a占据四字节 b和c各一字节 整体占据8个字节 节省了33%