sizeof

作者: yangqi916 | 来源:发表于2017-02-25 21:25 被阅读0次

    许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐。

    每个特定平台上的编译器都有自己的默认“对齐系数”(32位机一般为4,64位机一般为8)。我们可以通过预编译命令#pragma pack(k),k=1,2,4,8,16来改变这个系数,其中k就是需要指定的“对齐系数”;也可以使用#pragma pack()取消自定义字节对齐方式。

    struct 或者 union 成员对齐规则如下:

    1. 第一个数据成员放在offset为0的地方,对齐按照对齐系数和自身占用字节数中,二者比较小的那个进行对齐;
    2. 在数据成员完成各自对齐以后,struct或者union本身也要进行对齐,对齐将按照对齐系数和struct或者union中最大数据成员长度中比较小的那个进行;

    先局部成员对齐,然后再全局对齐。

    sizeof基本

    sizeof 与结构体, 注意对齐的影响

    sizeof 与 类

    相关文章

      网友评论

          本文标题:sizeof

          本文链接:https://www.haomeiwen.com/subject/mdpnwttx.html