struct 对齐机制定义

一般来说,结构体变量占据的内存大小是所有成员变量占据内存大小的总和,但有些例外,需要特别注意。


1、结构体变量的首地址能够被其最宽的基本类型成员的大小所整除。

2、结构体每个成员相对于结构体首地址的偏移量,都是成员大小的整数倍。。

3、结构体的总大小为结构体最宽基本类型成员的大小的整数倍。

字节对齐有助于加快计算机的取数速度,节省指令周期,因此不符合以上要求,编译器都会对结构体填充字节。

#include <iostream>
using namespace std;

int main()
{
    struct computer
    {
        char  c1; // c1存放在【0】...【1】的位置上。
        short s2; // 偏移必须是4的整数,所以在c1后面【2】...【3】处填入空格,s2存放在【4】...【7】
        int   i3; // i3存放在【8】,但整个结构体大小为最宽的成员的整数倍,
                  // 最宽的int是4,12为4整数倍,所以i3后面【9】...【11】处填充空格
    };
    return 0;
}

  

猜你喜欢

转载自www.cnblogs.com/Open-Source/p/12920547.html