lxg

导航

 

结构体对齐:

公式1:前面的地址必须是后面的地址正数倍,不是就补齐

公式2:整个Struct的地址必须是最大字节的整数倍

练习: Struct E1 { int a;char b; char c}e1;

第一地址肯定存放a是4Byte地址,

第二地址,b要1Byte的地址,

来欢迎公式一登场: 4 == 1*N (N等于正整数) 答"是"!地址现在为5Byte,下一个c要1Byte的地址同上,所以,就是6Byte。

来欢迎公式二登场,在这个E1中最大的字节是4,而我们的地址字节是6,4的整数倍不是6,所以,要加2Byte(总地址),So,整个字节为8!

CAUTION: 每个特定平台上的编译器都有自己的默认“对齐系数”。可以通过预编译命令#pragma pack(n)

struct simple_st
{
int a;
char b;
float c;
};
addr % sizeof()

posted on 2024-01-23 20:00  lxg_7105  阅读(9)  评论(0编辑  收藏  举报