- 7
- 0
- 约1.03万字
- 约 11页
- 2017-06-16 发布于河南
- 举报
深入理解字节对齐方式
字节对齐方式
一、快速理解
1. 什么是字节对齐?
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然边界(alignment)分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。
为了使CPU能够对变量进行快速的访问,变量的起始地址应该具有某些特性,即所谓的”对齐”. 比如4字节的int型,其起始地址应该位于4字节的边界上,即起始地址能够被4整除.
2. 字节对齐有什么作用?
字节对齐的作用不仅是便于cpu快速访问,同时合理的利用字节对齐可以有效地节省存储空间。
对于32位机来说,4字节对齐能够使cpu访问速度提高,比如说一个long类型的变量,如果跨越了4字节边界存储,那么cpu要???取两次,这样效率就低了。但是在32位机中使用1字节或者2字节对齐,反而会使变量访问速度降低。所以这要考虑处理器类型,另外还得考虑编译器的类型。在vc中默认是4字节对齐的,GNU gcc 也是默认4字节对齐。
3. 更改C编译器的缺省字节对齐方式
在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。一般地,可以通过下面的方法来改变缺省的对界条件:
· 使用伪指令#pragma p
您可能关注的文档
- 耐磨料磨损材料数据库的设计与实现.pdf
- 电子技能竞赛培训-电子应用系统设计导论.pdf
- 工程数据库在公路设计与管理中的应用.pdf
- ADCADS1255实现23Bits有效位的应用.pdf
- 银行个人储蓄数据库设计说明书.pdf
- 防SQL注入攻击的数据库驱动设计与实现.pdf
- 电路设计(二) [兼容模式].pdf
- 基于Freescale9S+12DG128的智能车控制系统设计.pdf
- 果汁饮料五大危害.doc
- 基于大数据的对账算法的设计.pdf
- 物联网技术支持下的智慧校园智能学习环境感知与反馈系统在校园体育中的应用教学研究课题报告.docx
- 跨学科教学知识整合与迁移的智能化路径研究——以人工智能为视角教学研究课题报告.docx
- 区块链技术在学生综合素质评价数据安全存储与隐私保护中的创新应用研究教学研究课题报告.docx
- 面向国际学生的校园志愿者服务时长语言服务系统设计课题报告教学研究课题报告.docx
- 数字化评价在学生环境意识评价中的应用研究教学研究课题报告.docx
- 高中生物教学中基因测序技术在疾病诊断中的应用课题报告教学研究课题报告.docx
- 跨学科教学中人工智能支持的学生合作学习效果与教学互动模式研究教学研究课题报告.docx
- 初中生对AI在空间太阳能利用中兴趣与认知的课题报告教学研究课题报告.docx
- 校园图书管理系统用户满意度评价体系构建课题报告教学研究课题报告.docx
- 大学英语口语教学与真实语境模拟创设策略课题报告教学研究课题报告.docx
原创力文档

文档评论(0)