C语言中内存对齐补齐原则

来源:互联网 发布:专科网络教育 档案 编辑:程序博客网 时间:2024/05/16 09:33

C语言中内存对齐补齐原则

对齐原则:每一成员需对齐为后一成员类型的倍数
补齐原则:最终大小补齐为成员类型最大值的倍数

1.C语言中文网

在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是:

struct A{ int a; short b; int c; char d;};struct B{ int a; short b; char c; int d;};

说明如下

// 对齐原则:每一成员需对齐为后一成员类型的倍数
// 补齐原则:最终大小补齐为成员类型最大值的倍数

structA{ inta;     // 4 shortb;   // (4) + 2 = 6 下一元素为 int,需对齐为 4 的倍数, 6 + (2) = 8 intc;     // (8) + 4 = (12) chard;    // (12) + 1 = 13, 需补齐为 4 的倍数,13 + (3) = 16};structB{ inta;     // 4 shortb;   // (4) + 2 = 6,下一成员为 char 类型,不考虑对齐 charc;    // (6) + 1 = 7,下一成员为 int 类型,需对其为 4 的倍数,7 + (1) = 8 intd;     // (8) + 4 = 12,已是 4 的倍数} 
1 0
原创粉丝点击