结构体内成员内存对齐的一般原则:
1. 第一个成员的起始位置为0;以后每个成员的起始位置都为该成员大小的整数倍处,不足便要补空;
2. 对于结构体最后面,如果结束位置不是最大的那个成员大小的整数倍-1,则需要补空。也就是结构体的大小总是该结构体中
最大的那个成员大小的整数倍。(这个应该是考虑到以后的 “结构体对齐”)
例如:
struct Node{
double b; //8
long c; //4
short a; //2
};
sizeof(Node) = 16 而不是14。结果为14时虽然满足条例1,但不满足条例2
struct Node
{
short a; //2
double b; //8
long c; //4
};
sizeof(Node) = 24 而不是20, 因为需要满足条例2