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

【C语言】结构体对齐规则

文章目录

      • 一、内存对齐规则
      • 二、结构体的整体对齐:

一、内存对齐规则

1.第一个数据成员:结构体的第一个数据成员总是放置在其起始地址处,即偏移量为0的位置。
2.其他数据成员的对齐:每个后续成员的存储地址必须是其有效对齐值的整数倍。

自身对齐值是指该成员类型的大小(例如,int 类型通常是4字节)。
指定对齐值可以通过 #pragma pack(N) 宏来设定,其中 N 必须是2的幂次方(如1, 2, 4, 8, 16等)。如果没有特别指定,不同平台有不同的默认值:

在32位Linux系统上,默认为4。
在64位系统上,默认为8。
在ARM CPU上,默认也为8。
有效对齐值是自身对齐值与指定对齐值中的较小者

二、结构体的整体对齐:

1.结构体的总大小是其所有成员中最大的有效对齐值或指定对齐值(取两者中的较小者)的整数倍。
2.这意味着编译器可能会在结构体末尾添加填充字节,以确保整个结构体满足上述对齐要求。


http://www.kler.cn/a/530315.html

相关文章:

  • 【Python-办公自动化】实现自动化输出json数据类型的分析报告和正逆转换
  • 如何配置Java JDK
  • 深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)
  • Java的Integer缓存池
  • QT知识点复习
  • Windsurf cursor vscode+cline 与Python快速开发指南
  • MySQL是怎么实现事务隔离的?
  • [权限提升] Windows 提权 维持 — 系统错误配置提权 - PATH 环境变量提权
  • Linux环境下测试服务器的DDR5内存性能
  • C语言 --- 分支
  • 【Leetcode 每日一题】598. 区间加法 II
  • 知识库管理在提升企业决策效率与知识共享中的应用探讨
  • Java 大视界 -- Java 大数据在智慧农业中的应用与实践(70)
  • 深入解析 CSS 中不常用属性及其相互作用
  • 《苍穹外卖》项目学习记录-Day11营业额统计
  • CV报错与模型推理注意
  • [SAP ABAP] 静态断点的使用
  • 14 2D矩形模块( rect.rs)
  • 蓝桥杯之c++入门(三)【条件判断】
  • for fn in *.html ;do fns=“${fns} ${fn} “ ;done; firefox ${fns}
  • DeepSeek本地部署+可视化WebUI
  • Autosar-以太网是怎么运行的?(Davinci配置部分)
  • LeetCode:198.打家劫舍
  • Compose笔记(二)--LaunchedEffect
  • AMD简单读书笔记2
  • 【人工智能】深入探索Python中的自注意力机制:实现Transformer的核心组件