(1)概念:
现代计算机系统中,内存都是依照字节进行划分,理论上讲对于任何类型的变量的访问都可以从任何地址开始,但实际应用中,对特定类型的变量经常在特定内存地址进行访问,需要各种类型的数据按照一定的规则进行布置,而不是顺序的一个接一个排列,字节对齐就是用空间换时间,提高存取效率。
(2)原则:
基本数据类型的自身对齐值:例如,char型数据的自身对齐值为1字节,short类型自身对齐值为2字节,int、float、long类型自身对齐值均为4字节,double类型自身对齐值均为8字节。
结构体或类的自身对齐值:其成员中自身对齐值最大的那个值。
指定对齐值:通过预编译指令 #pragma pack (value) 来指定的对齐值value。(注:取消自定义对齐值得指令为 #pragma pack ( ))
数据成员、结构体和类的有效对齐值:其自身对齐值和指定对齐值中较小的那个值。
(3)举例:
例1:
char、short、int是基本数据,自身对齐值为1、2、4,所以结构体的自身对齐值 为成员中最大的,即4。
例2:
例3:
版权声明:本文为iea5357原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。