关系经济人类预测化学自然
中准网
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

结构体数据对齐方法的研究

5月9日 渡缘祠投稿
  摘要:内存地址对齐,是一种在计算机内存中排列数据、访问数据的一种方式。当今的计算机在计算机内存中读写数据时都是按字(word)大小块来进行操作的。基本类型数据对齐就是数据在内存中的偏移地址必须等于一个字(word)的倍数,按这种存储数据的方式,可以提升系统在读取数据时的性能。有时候为了对齐数据,可能必须在上一个数据结束和下一个数据开始的地方插入一些没有用处字节,这就是结构体数据对齐。
  关键词:结构;数据
  一、假设计算机的字大小为4个字节,因此变量在内存中的首地址都是满足4地址对齐,CPU只能对4的倍数的地址进行读取,而每次能读取4个字节大小的数据
  假设有一个整型的数据a的首地址不是4的倍数,因此想读取a的数据,CPU要进行两次内存读取,而且还要对两次读取的数据进行处理才能得到a的数据,而一个程序的瓶颈往往不是CPU的速度,而是取決于内存的带宽,因为CPU得处理速度要远大于从内存中读取数据的速度,因此减少对内存空间的访问是提高程序性能的关键〔1〕。从上例可以看出,采取内存地址对齐策略是提高程序性能的关键。
  二、结构体默认的规则
  本文所述的环境均是在32位编译器的编译环境中,一般编译器默认对齐方式是4字节。
  总结结构体的数据对齐方式满足条件:
  1、结构体变量的首地址能够被其最宽基本类型成员的大小所整除。2、结构体每个成员相对于结构体首地址的偏移量(offset)都是成员自身大小的整数倍,如有需要编译器会在成员之间加上填充字节。3、结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。
  三、手动对齐方式
  如果编译器自动实现结构体对齐,我们就称为自动对齐,与之相反,使用pragma进行对齐的就是手动对齐。
  pragma备用告诉编译器,程序员自己希望的对齐方式。比如,虽然编译器的默认对齐方式是4,但是如果我们不希望按照4对齐,而是希望是8,这个时候就必须使用pragma进行手动对齐了。
  常用的设置手动对齐的命令有两种:第一种是pragmapack(),这种就是设置编译器1字节对齐,不过也可以认为是设置为不对齐或者取消对齐;第二种是
  pragmapack(4),这个括号中的数字表示希望以多少字节进行对齐。
  我们需要prgamapack(n)开头,以pragmapack()结尾,定义一个区间,这个区间内的对齐参数就是n。
  举例说明
  (一)自动对齐方式或者是默认4字节对齐
  分析代码:根据基本数据类型对齐规则可知,c(字节),i(4字节),d(8字节),b(2字节)。是不是结果就是1482呢?很明显不是,c是首元素,不需要对齐,但是后面的就需要对齐了,i是4字节,但是它的起始偏移量只有1字节,不能整除4,因此就在c后面再加3个字节,当遇到d时,由于之前的偏移量就是8,所以不需要偏移,在b之前有16字节,这时也不需要偏移就是直接加上2。所以最后结果就是1348220,对不对呢?其实是不对的,因为18不是默认对齐4的整数倍,还需要在后面补充2字节。一共就是20字节。
  分析:该结果就是24字节,分析同上,但是在最后一步不一样,对齐是8字节,所以在b后面还需要添加6字节。最终结果就是24。
  四、结语
  需要字节对齐的根本原因在于CPU访问数据的效率问题。因为计算机可以处理数据位数都是确定的,这时候就说明它一次性只能处理确定位数的数据,但是当认为造成该数据不在计算机一次性可访问的范围内的时候,计算机就会按照一定的优化方法来处理,这样是更加方便和快捷的处理数据。也就是强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。
  参考文献
  〔1〕陈荣,蔡志勇,胡保安。基于嵌入式操作系统VxWorks数据采集系统软件设计〔J〕。科技广场,2005,(06):8284。
投诉 评论 转载

结构体数据对齐方法的研究摘要:内存地址对齐,是一种在计算机内存中排列数据、访问数据的一种方式。当今的计算机在计算机内存中读写数据时都是按字(word)大小块来进行操作的。基本类型数据对齐就是数据在内存……怎么回事?惠州年轻人都喜欢去这里世界旅游日虽不便远行但也能从近在身边的风景中细细体验旅行的诗和远方在惠州有不少的网红打卡点TA们曾经因身披岁月痕迹而被很多人遗忘在历史长河里……英媒中国5左右目标传递两大信号参考消息网3月12日报道据英国广播公司网站3月9日报道,中国本年度经济增长目标为5左右。这引发了广泛关注,一方面因为该数值低于几乎所有机构和经济学家的预测;另一方面,中国内部和……什么是婴儿伞车伞车比较轻便,方便出行,但大多数的避震功能都不是很好,功能不如推车齐全,安全隐患比较大,故只适合在平坦的路面和能坐立的宝宝。什么是婴儿伞车呢?就让本站的小编和你一起去了解一下吧……谈互联网金融对宏观经济的影响摘要:本文从提升民间资金利用率,引导民间金融的规范化、弥补传统金融之中存在的不足,能够更好地满足客户的需求等方面,对互联网金融对宏观经济的积极影响进行了说明,并从存在较高的信用……中医治疗慢性泄泻(脾虚湿盛型)古方1则香砂二术止泻汤泄泻是一种以排便次数增多、粪便稀溏,甚至泻出如水样为主症的病证。泄泻可分为急性和慢性,临床上常见慢性泄泻。慢性泄泻主要以脾虚湿盛型为主,脾主运化,喜燥恶湿,脾胃运化失司,湿邪内……过年在家试试自制泡椒凤爪泡椒凤爪的安全隐患原料和配料的细菌污染严重。原料清洁、干净与否,会决定初始微生物的污染数量。一般的杀菌方法很难达到杀菌率100。即使在杀菌率为99。9的情况下,初始微生物……美媒爆料冲突原因魔术球员嘲讽詹姆斯没有一枚真正的戒指!2022年12月28日,湖人客场对战魔术,比赛期间魔术替补席球员与詹姆斯不知道因为什么爆发冲突,双方很快就被临场裁判和队友拉开。据当时的媒体爆料,导致冲突的原因是魔术球员……拼凑造句用拼凑造句大全(91)他从来没有像现在一般痛过,仿似全身都在一瞬间被碾成了齑粉,碎的支离破碎,再也无法拼凑回来。酒壑盛人(92)等待有时候是一种寂寞的姿态,和着时间的拍节等着一件或许发……美丽的杭州西湖人们常说:上有天堂下有苏杭。去年夏天我就和爸爸妈妈一起去杭州目睹了这一风采。西湖的大门非常别致,就像一幅画。门上石头雕刻着两条威武的龙头,还有一个太阳与月亮,西湖那座高耸……公孙胜是个什么样的人公孙胜性格特点解析公孙胜在108将中排名第四,绰号入云龙。不过公孙胜在梁山所做之事,让他的好汉之名颇受争议,因为他曾两次出走梁山。第二次离开更是下定决心,不再回头。其实公孙胜是一位理想主义者,他……辣王李永志每天吃5斤辣椒配白酒,破世界纪录,结果如何?提起辣椒,大家脑海中浮现的想必都是麻辣的川菜和香辣的湘菜。毕竟在众人的潜意识中,中国最能吃辣的人一定是在川湘黔地区。但如果说荣获中国辣王这一称号的是位地地道道的中原……
禾雀花季,赶紧来欣赏我最美的时候,把我留在你的心里!4人签约!篮网雄鹿补强后卫,哈登迎来新搭档,湖人勇士一无所获截至目前,盘点2022年发布的6000mAh超大电池的手机主帅蔡斌再放豪言,剑指女排世锦赛4强,一大优势或助其圆梦新一轮刺激要来了?Python处理日期与时间的全面总结放假在家做什么,当然是用手柄玩游戏回忆童年啦尽力生长就好丛林穿越。王者荣耀在优化更新上做出的努力,或许远不止你看到的那些一个3换2,一个8换1,一个7换1,NBA过去3个冠军,全靠什么是虚拟计算机集群
如何改正让你变丑的坏习惯傅强混沌大象贾平凹关于介绍对虾的作文600字半人马座中唯有那一颗恒星与地球离得最近古茶诗中的清之审美意蕴异性相处女人默许你做这些事多半是爱上誊写怎么读音誊写的拼音介绍令人难以置信的韦伯太空望远镜测试图像暗示了科学的新可能性第一次做菜风雨过后见彩虹可不可以打了一个耳光赔了5000?绿仁黑豆(黑豆黄心和绿心哪个好)

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州