- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内存字节对齐
内存字节对齐和小端模式:/*本程序是关于:编译器内存的字节对齐方式和存储时的小端对齐模式(win7 32bit)#pragma pack(n)默认为8字节对齐,(即n=8)其中n的取值为1,2,4,8,16,32等内存字节对齐大小和方式:结构体内变量对齐:每个变量的对齐字节数大小argAlignsize=min(#pragma pack(n),sizeof(变量));方式:结构体的第一个变量的初始偏移地址为0,其它变量的偏移地址(当前变量的起始地址)必须是argAlignsize的整数倍,不够整数倍的补空,不添加任何数据结构体对齐:结构体的对齐字节数大小strAlignsize=min(#pragma pack(n),sizeof(所有变量中最大字节的变量))方式:对于单独的结构体来说,结构体本身按照strAlignsize大小来对齐结构体B在结构体A中时,结构体B的起始地址是结构体B的strAlignsize大小的整数倍小端对齐模式:指针指着一个存储空间,存储空间地址由低到高的存储内容为:0x78,0x67,0x33,0x45若指针为char, 则获取的数据为0x78若指针为short,则获取的数据为0x6778若指针为long, 则获取的数据为0/#include iostreamusing namespace std;/*更改C编译器内存的缺省字节对齐方式,由默认的n=4字节,变为n字节对齐,其中n的取值为1,2,4,8,16,32等*/#pragma pack(2)struct A{unsigned char a;unsigned short b;};struct B{unsigned char c;unsigned int d;};/*恢复C编译器内存的缺省字节对齐方式*/#pragma pack()struct C{unsigned char e;A A_a;B B_b;unsigned short f; };void main(){C* C_c;unsigned char i []={ 23,3,4,5,6,7,8,56,68, 37,98,100,67,89,86,97,12,34, 37,98,100,67,89,86,97,12,34};printf(数组i的十六进制显示:\n0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x \n\n,i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13],i[14],i[15],i[16],i[17],i[18],i[19],i[20],i[21],i[22],i[23],i[24],i[25],i[26]);C_c = (C*)i;printf( 结构体C_c中变量e的值:e = 0x%04x\n结构体C_c中结构体A_a中的值:a = 0x%04xb = 0x%04x\n 结构体C_c中结构体B_b中的值:c = 0x%04xd = 0x%04x\n结构体C_c中变量f的值:f = 0x%04x\n\n,C_c-e,C_c-A_a.a,C_c-A_a.b,C_c-B_b.c,C_c-B_b.d,C_c-f);printf( 结构体C_c中结构体e地址:e= 0x%04x\n 结构体C_c中结构体A_a地址:A_a= 0x%04x\n 结构体C_c中变量b地址:b= 0x%04x\n 结构体C_c中结构体B_b地址:B_b= 0x%04x\n 结构体C_c中变量d地址:d= 0x%04x\n 结构体C_c中变量f地址:f= 0x%04x\n, (C_c-e), (C_c-A_a), (C_c-A_a.b), (C_c-B_b), (C_c-B_b.d), (C_c-f));system(pause);}例程分析:所有的字节对齐书均按照上面给出的说明计算若#pragm pack(2) 和#pragm pack()语句注释掉,则为默认的n=4字节对齐。结构体A_a的strAlignsize_A = min(#pragma pack(4),sizeof(b)) = 2结构体B_b的strAlignsize_B = min(#pragma pack(4),sizeof(d)) = 4.结构体C_c中的变量e字节对齐数为1,e=0x17,其地
您可能关注的文档
最近下载
- 中小学校内部控制手册.pdf VIP
- Hilti喜利得防火胶泥材料安全数据表 CFS-P BA CP 618 CFS-D 1'' (ZH), 说明书用户手册.pdf
- 《园艺设施工程学》第1章园艺设施的发展现状与趋势.ppt
- 《拒绝校园欺凌》ppt课件(图文).pptx VIP
- 知识产权常年财务顾问合同.docx VIP
- 犯罪原因分析_性犯罪_强奸罪.pptx VIP
- SY∕T 5665-2018 钻井液用防塌封堵剂 改性沥青.pdf
- 儿童护牙知识课件.pptx VIP
- T CAAMTB 68—2022 自调整膜片弹簧离合器总成技术要求和台架试验方法.pdf VIP
- 地方院校药学专业应用型人才创新能力培养体系的构建.pdf VIP
文档评论(0)