Skip to content

内存对齐

示例

cpp
#include <stdio.h>

struct Data {
    int a;
    char b;
    int c;
};

int main(int argc, char **argv) {
    struct Data data;
    data.a = 1;
    data.b = 'b';
    data.c = 2;

    printf("size of data: %ld\n", sizeof(data));
    // size of data: 12

    return 0;
}

不同结构体所存放的内存数据

cpp
struct Data {
    int a;  // 1
    char b; // 'a'
    int c;  // 3
};

内存数据

shell
01 00 00 00   62 7f 00 00   02 00 00 00

7f 可能是无效数据,不会被访问到

cpp
struct Data {
    int a; // 1
    char b; // 'b'
    char c; // 'c'
    char d; // 'd'
    char e; // 'e'
    int f; // 2
};

内存数据

shell
01 00 00 00   62 63 64 65   02 00 00 00

如果不初始化,内存数据可能是无效的

shell
00 a6 ba b7   f7 7f 00 00   9a b6 c1 05