字节对齐总结

字节对齐总结

 

字节对齐的依赖关系如下图所示,字节对齐规则主要依赖于数据类型的有效对齐值,而数据类型的有效对齐值又是自身对齐值和指定对齐值中的较小者。对于有成员的数据类型(类、结构体),自身对齐值等于成员自身对齐值中的最大值。指定对齐值由伪指令#pragma  pack(n)决定,默认指定对齐值一般为4。

 

其实我们自己可以定义一个容器和成员的概念,假如现在内存中有一个结构体变量,那么该结构体的容器是内存,该结构体作为内存的成员存在于容器中。结构体本身也是个容器,那么结构体的成员变量就是该容器的成员。

 

基于容器和成员我们可以规定对齐规则如下:

1、  成员基于容器的偏移地址必须能整除有效对齐值N,比如int类型的成员的偏移地址必须被4整除。

2、  容器大小必须是最宽基本数据类型成员的整数倍,容器的大小就是容器在更大的容器里作为成员时的自身对齐值。在32位操作系统环境下,最宽基本数据类型成员如果超过了4字节,那么容器大小只需要保证是4的整数倍就行了。在64位操作系统环境下,最宽基本数据类型如果超过了8字节,容器大小只需要保证是8的倍数就行了。

 

参考链接:

https://www.cnblogs.com/clover-toeic/p/3853132.html

https://blog.csdn.net/lyh__521/article/details/45958847

 

 

 

 

 

 

 

 

                                                                                                                    

posted @ 2018-08-08 09:39  qust_cf  阅读(163)  评论(0编辑  收藏  举报