C语言有关内存对齐的问题

2025-06-22 15:58:39
推荐回答(1个)
回答1:

// 比如有这样的结构体
struct A
{
    char a; // 占1个字节
    int b;  // 占4个字节
};

// 那这个结构体一共要占5个字节的内存吗?
// 不是的,系统会把它填充成8个字节,这就是字节对齐
// 那系统为什么要这样做呢,这涉及到存取的效率问题
// 从硬件角度看,32位的CPU通过总线访问内存,一个总线周期访问32位内存数据
// 刚刚好4个字节,所以4字节对齐的存取效率是较高的
// 这就是牺牲空间换取效率了
// 当然不对齐CPU也能访问,就是要花点功夫而已