以下是结合之前计算机组成原理的知识,实践总结的两条规律:
A. 补全/对齐
例1:答案是10吗?
struct Example {
int a;
char b, c;
int d;
};
不是,是12。为什么呢?因为结构体里的所有变量需要根据字节数量最多的那个数量对齐,比如这里最多是4(int),两个char虽然只需要占用2个字节,但对齐后它们就需要占用4个字节了,4*3=12。
那为什么要对齐呢?(据说是因为对齐了的话,read和write很好定位,不用麻烦去计算偏移量)
例2:不难算出下面的结果了吗?
struct Example {
int a;
char b;
int d;
char c;
};
</