字节对齐的意义
来源:互联网 发布:华硕黄静事件 知乎 编辑:程序博客网 时间:2024/06/14 22:28
一、为什么需要进行字节对齐
1、各个硬件平台对存储空间的处理不尽相同,比如一些CPU访问特定的变量必须从特定的地址进行读取,所以在这种架构下就必须进行字节对齐了,要不然读取不到数据或者读取到的数据是错误的。
2、会对CPU的存取效率产生影响:比如有些平台CPU从内存中偶数地址开始读取数据,如果数据起始地址正好为偶数,则1个读取周期就可以读出一个int类型的值,而如果数据其实地址为奇数,那我们就需要2个读取周期读出数据,并对高地址和低地址进行拼凑,这在读取效率上显然已经落后了很多了。
二、字节对齐规则
1、数据类型自身对齐值:char类型自身对齐值为1,short对齐值为2,int, float, long对齐值为4,string对齐值为4,double对齐值为8,long double对齐方式为12。
2、指定对齐方式:#pragma pack (value)
时指定的对齐value。
3、结构体或者类的对齐方式:其成员中自身对齐值最大的那个值
4、含有指定对齐方式的结构体和类的对齐方式:按照指定对齐方式和结构体或者类成员中自身对齐值最大的那个值。
比如:
#pragma pack (2)struct temp{ static int A; char B; double C; int D;};#pragma pack() //恢复对齐状态
在此我们指定对齐方式为2,而struct默认对齐方式为4,所以对齐方式取二者中的较小者:2。
并且在此A被static 修饰,为静态变量,其存放位置与结构体或者类的实例无关,所以不对结构体或者类的大小产生任何影响。
在此struct C的大小为14。//sizeof(C) == 14
三、字节对齐的优势
字节对齐可以让CPU快速取到相应的数据,可以提高程序的效率。
- 字节对齐的意义
- 字节对齐的探讨
- 字节对齐的问题
- 字节对齐的探讨
- 字节对齐的作用
- 字节对齐的问题
- 字节对齐的处理
- 通俗易懂的字节对齐
- 字节对齐的问题
- 字节对齐的问题
- 字节对齐的规则
- 字节对齐的作用
- 字节的对齐方式
- 字节对齐的讲解
- 字节对齐的计算
- 字节对齐的算法
- 字节的对齐原理
- C++的字节对齐
- 我的实习面经(Android开发,已拿阿里,华为,CVTE Offer)
- crond和crontab
- JPA学习(三):java持久化查询语言JPQL--介绍、基础语法
- GNU-ld链接脚本浅析
- keras —— 常见问题汇总
- 字节对齐的意义
- 关于crond和crontab
- jQuery Ajax 实例 ($.ajax、$.post、$.get)
- Unity3D引擎-摄像机控制CameraControl
- GDOI2017再次酱油记
- IPC进程间通信主题之信号量
- struts2+jdbc+oracle查询(模糊查询+页面查询)
- Python学习笔记——类属性和实例属性
- 夏令营面试经验——反思总结(更新ing)