【C++】C++的字节对齐
结构体为:
struct A {
int a;
char b;
double c;
};
struct B {
int a;
double c;
char b;
};
int main() {
printf("%d %d", sizeof(A), sizeof(B));
}
在64位系统下,输出了 16 24
。
对于A来说,结构如下:
|int a(32位)|char b(8位)|占用(24位)| => 第0~7个字节
|double c(64位)| => 第8~15个字节
总共16个字节。
对B来说,结构性如下:
|int a(32位)|占用(32位)| => 第0~7个字节
|double c(64位)| => 第8~15个字节
|char b(8位)|占用(56位)| => 第16~23个字节
总共24个字节。