VC6默认设置下结构体对齐大小

来源:互联网 发布:网络自动追呼器手机版 编辑:程序博客网 时间:2024/05/18 03:48

项目右键  --> Settings  --> C/C++ --> Code Grneration ,默认值为8


对齐原则:

     原则1: 数据成员的对齐规则

                    结构的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始。

                   ( 比如int在32位机器上为4字节,则要从4的整数倍地址开始存储)。


     原则2:结构体的总大小

                    结构体的总大小,也就是sizeof的结果,必须是其内部最大成员的整数倍,不足的要补齐。


     原则3:如果一个结构体中有某些成员是结构体

                   如果一个结构中某些成员是结构体,则这些结构体成员要从其内部最大成员大小的地址开始存储。

                   (比如:struct s1中有成员是struct s2,s2里有char、short、double等成员,则s2应该从8的整数倍地址开始存储)


     原则4:对齐参数如果比结构体成员大sizeof值小,则该成员的偏移量应该以此值为准。

                    (亦即:结构体成员偏移量取二者的最小值)


建议:

        结构中的成员按照数据类型由小到大的顺序进行书写。























0 0