首页 > 其他 > 详细

C-struct和union字节对齐深入学习

时间:2020-04-14 16:37:17      阅读:102      评论:0      收藏:0      [点我收藏+]

 

 

typedef struct test
{
    char nume[10];
    double age;
};

1.基本概念

有四个概念需要理解:
A、数据类型自身的对齐值:
      指对该数据类型使用sizeof()操作符进行操作所得到的大小(单位,字节);

      比如,对于[unsigned] char类型的数据,其自身对齐值为1字节;对于[unsigned] short类型的数据,其自身对齐值是2字节;对于[unsigned] int、[unsigned] long、[unsigned] l、float、等数据类型,其自身对齐值是4字节;double long 其自身对齐值为8;
B、结构体、联合体、类的自身对齐值:
      是指其所有基本类型的成员中,自身对齐值最大的那个值;如果这些复合类型中有嵌套类型或复合类型的变量,则需要把这些嵌套的类型或复合类型的变量拆解成基本类型的成员之后再对齐;
C、指定对齐值:
       是指使用预处理指令#pragma pack(align_value)指定的对齐值align_value;
D、数据成员、结构体和类的有效对齐值:
        是指其自身对齐值和指定对齐值中较小的那个值;
        其中,有效对齐值是最终用来决定数据存放地址方式的值,最重要;设定有效对齐值为N,就表示"对齐在N字节上",也就是说,该数据的"存放起始地址%N=0";

C-struct和union字节对齐深入学习

原文:https://www.cnblogs.com/weiyouqing/p/12698566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!