C/C++ 字节对齐问题

字节对齐的原因

    为了提高 CPU 的存储速度,编译器会对 struct 和 union的存储进行优化,即进行字节对齐。

对齐方式

    对于 struct 或 union 中的 struct 或者 union 来说,它们的字节对齐标准就是它的所有成员中字节数最大的数据的字节数。

一般情况下 C/C++ 的变量所占用的字节数

        char:    1字节;

        short:   2字节;

        int:       4字节;

        long:    4字节;

        long long: 8字节;

        float:    4字节;

        double: 8字节;

        bool:    1字节;

*struct 中字节对齐需要满足的条件:

    1、某个变量存放的起始位置相对于结构的起始位置的偏移量是该变量字节数的整数倍;

    2、结构所占用的总字节数是结构种字节数最长的变量的字节数的整数倍。

    例:

struct Struct
{
    double d1;
    char d2;
    int d3;
}a;

sizeof(a) = 8 + 1 + 3 + 4 = 16。其中补上的 3 个字节是为了让 int 型数据的起

你可能感兴趣的:(C/C++,字节对齐)