码迷,mamicode.com
首页 > 编程语言 > 详细

C语言的结构体对齐问题,延伸到C++的类的size

时间:2019-11-14 18:30:28      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:对齐   原则   highlight   自身   自动变量   ali   最大   c语言   void   

两个原则:

1、一个自动变量,多数在栈上,起始地址默认要求是其自身大小的整数倍。

即 char c; c的地址可以任意。

int a;  a的地址必须是sizeof(int)的整数倍。

2、一个结构体的大小,必须是其内部成员size的最大公倍数。

 

以代码为例,看看发生了什么。

struct align_what{
    char a;  //申请一个a,char  任意位置
    char c;  //c直接紧挨着a即可
    void *d;  // void* 64位机器上是8,所以从c后面偏移了6
    char f;  // d后面紧跟着即可
};

sizeof(align_what) == ?

答案是8。

  

C语言的结构体对齐问题,延伸到C++的类的size

标签:对齐   原则   highlight   自身   自动变量   ali   最大   c语言   void   

原文地址:https://www.cnblogs.com/buddho/p/11858744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!