#如何计算结构体字节数计算结构体字节数的关键是搞明白字节对齐。
字节对齐是为了提高内存访问的效率与速度,它的细节和编译器实现有关,但一般而言,遵循以下规则:
按照这个规则,可以得出以下结构体所占的内存为 24 字节:
struct node {
char a; // 1 字节,但会填充至 4 字节
int b; // 4 字节,至此共 8 字节,与 long long 相同,不需要填充
long long c; // 8 字节,至此共 16 字节
char d; // 1 字节,至此共 17 字节
// 结构体总大小必须为 8 的整数倍,所以填充至 24 字节
};
struct node {
char a; // 1 字节,但会填充至 4 字节
int b; // 4 字节,至此共 8 字节,与 long long 相同,不需要填充
long long c; // 8 字节,至此共 16 字节
char d; // 1 字节,至此共 17 字节
// 结构体总大小必须为 8 的整数倍,所以填充至 24 字节
};