回到洪荒去泡妞一个关注IT技术分享,关注互联网的网站,爱分享网络资源,分享学到的知识,分享生活的乐趣。
(1). 1 个字节的变量,例如char类型的变量,放在任意地址的位置上;
(2). 2 个字节的变量,例如short类型的变量,放在2 的整数倍的地址上;
(3). 4 个字节的变量,例如float、int类型的变量,放在4 的整数倍地址上;
(4). 8 个字节的变量,例如long long、double类型的变量,放在8 的整数倍地址上;
2、__attribute__((packed)):取消变量对齐,按照实际占用字节数对齐(就是让变量之间排列紧密,不留缝隙)。(gcc才支持)详见例7。
3、#pragma pack (n):让变量强制按照 n 的倍数进行对齐,并会影响到结构体结尾地址的补齐(详见四的通常情况下关于结尾地址补齐的描述)。详见例8。
通常情况:我总结的规律如下:结构体中间:各结构体的起始地址按照各个类型变量默认规则进行摆放,但除了 char 类型变量(详见一),char 类型变量一般遵循 2 的倍数地址开始存储。详见例2。结构体最后(重要):视结构体中最大类型是哪一个,如果是像 int 类型那样是 4 个字节的,并且结构体的结尾地址不满足 4 的倍数的线 的倍数地址补齐;如果是像 double 类型那样是 8 个字节的,并且结构体的结尾地址不满足 8 的倍数的线 的倍数地址补齐;以此类推。。。。
结构体嵌套:子结构体的成员变量起始地址要视子结构体中最大变量类型决定,比如 struct a 含有 struct b,b 里有 char,int,double 等元素,那 b 应该从 8 的整数倍开始存储。详见例5、例6。
含数组成员:比如 char a[5],它的对齐方式和连续写 5 个 char 类型变量是一样的,也就是说它还是按一个字节对齐。详见例1、例2、例3、例4、例5。
含联合体(union)成员:取联合体中最大类型的整数倍地址开始存储。详见例5。
网恋乘风阅读无弹窗大结局_(周妄江夏阅读无弹窗)最新章节列表_笔趣阁(周妄江夏)
陌意共处(陆淮征江桃)全文免费阅读无弹窗大结局_(陆淮征江桃)陌意共处最新章节列表_笔趣阁(陆淮征江桃)
陆淮征江桃最新章节(陌意共处)全文免费阅读无弹窗大结局_陆淮征江桃全文免费阅读(陌意共处)
江菀陈宗廷周文渊(重叠赴约)全文免费阅读无弹窗_重叠赴约最新小说_笔趣阁(重叠赴约)
网恋乘风阅读无弹窗大结局_(周妄江夏阅读无弹窗)最新章节列表_笔趣阁(周妄江夏)
陌意共处(陆淮征江桃)全文免费阅读无弹窗大结局_(陆淮征江桃)陌意共处最新章节列表_笔趣阁(陆淮征江桃)
陆淮征江桃最新章节(陌意共处)全文免费阅读无弹窗大结局_陆淮征江桃全文免费阅读(陌意共处)
江菀陈宗廷周文渊(重叠赴约)全文免费阅读无弹窗_重叠赴约最新小说_笔趣阁(重叠赴约)
重叠赴约(江菀陈宗廷周文渊)全文免费阅读无弹窗大结局_(江菀陈宗廷周文渊)重叠赴约无弹窗最新章节列表_笔趣阁(江菀陈宗廷周文渊)
纪宁霍煜森(霍煜森纪宁)全文免费阅读无弹窗大结局_(霍煜森纪宁)纪宁霍煜森无弹窗最新章节列表_笔趣阁(霍煜森纪宁)
《重生回八零,政委我们离婚吧》林静姝江为民全章节全文阅读TXT(今日热文)
《重生回八零,政委我们离婚吧》林静姝江为民全章节全文阅读TXT(今日热文)
重生回八零,政委我们离婚吧最新章节(林静姝江为民)全文免费阅读无弹窗大结局_重生回八零,政委我们离婚吧全文免费阅读(林静姝江为民)
夏思凝赵弘宇(重生八零:媳妇又在闹离婚)全文免费阅读无弹窗_重生八零:媳妇又在闹离婚最新小说_笔趣阁(重生八零:媳妇又在闹离婚)
重生八零:媳妇又在闹离婚最新章节(夏思凝赵弘宇)全文免费阅读无弹窗大结局_重生八零:媳妇又在闹离婚全文免费阅读(夏思凝赵弘宇)
|