当前位置: 首页 > news >正文

结构体对齐规则

1.第一个成员在结构体变量偏移量为0的地址处。

2.其他成员变量对齐到某个数字(对齐数)的整数倍的地址处。(对齐数=编译器默认的一个对齐数与该成员大小的较小值)注意:目前有且只有VS编译器有默认为8.

3.结构体总大小为最大对齐数的整数倍。

4.如果嵌套了结构体,嵌套的结构体对齐到自己的最大对齐数整数倍处,结构体整体大小就是所有最大对齐数(含嵌套结构体对齐数)的整数倍。

例1:

a1是char类型所以大小是1,i是int类型所以大小是4,a2是char类型所以大小是1,如上图所示,a1从0开始,占一个,因为1-3之间没有4的倍数所以i从4开始占4个空间大小,a2占一个(任何数都是1的倍数);总共是9个空间的大小,因为9不是4的倍数,所以向后找直到所占大小是4的倍数浪费了3个空间大小,最终结果是12.

例2:

a1是char类型从0开始占一个,因为a2是嵌套的结构体所以对齐到自己的最大对齐数整数倍由上面例题可知是4,所以从4开始向后占12个空间大小(上面例题求出S1大小是12),a3是char类型所以向后占一个空间的大小;上图可以看出0-16之间有17个数不是4的倍数,向后一直找直到为4的倍数,向后找3个总大小为20是4的倍数所以答案是20.

http://www.lryc.cn/news/192721.html

相关文章:

  • css 如何让元素内部文本和外部文本 一块显示省略号
  • SQL语句-中级
  • 巧用h2-database.jar连接数据库
  • 136.只出现一次的数字
  • mysql中遇到查询字段的别名与函数冲突问题
  • 直播获奖
  • 选择适合自身业务的HTTP代理有哪些因素决定?
  • 1.3 do...while实现1+...100 for实现1+...100
  • react数据管理之setState与Props
  • 如何保护我们的网络安全
  • springboot 制造装备物联及生产管理ERP系统
  • Google zxing 生成带logo的二维码图片
  • 使用Python计算平面多边形间最短距离
  • 【Python】Python语言基础(中)
  • 观察者模式、订阅者发布者模式、vtk中的观察者模式
  • 关于element-ui中,页面上有多个el-table并通过v-if、v-else等控制是否显示时,type=selection勾选框失效或不显示的问题
  • Stewart六自由度正解、逆解计算-C#和Matlab程序
  • C语言 驼峰命名法和下划线命名法
  • 大数据学习(8)-hive压缩
  • [sqoop]hive导入mysql,其中mysql的列存在默认值列
  • Stream流中的常用方法(forEach,filter,map,count,limit,skip,concat)和Stream流的特点
  • 2023大联盟2比赛总结
  • Flutter笔记:电商中文货币显示插件Money Display
  • 腾讯云上创建 对象存储cos
  • 微信小程序生成海报
  • stm32学习笔记:EXIT中断
  • css 块元素、行内元素、行内块元素相互转换
  • 【JUC】多线程基础概述
  • Git 回退代码的两种方法对比
  • Avalonia常用小控件Charts