C++ 对齐原则

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 版权协议,转载请附上原文出处链接和本声明。