【C++】C++的位元組對齊

tudouuuuu發表於2024-04-09

結構體為:

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個位元組。

相關文章