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

【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.lryc.cn/news/530381.html

相关文章:

  • 2025-工具集合整理
  • 快速提升网站收录:利用网站用户反馈机制
  • 图漾相机——Sample_V1示例程序
  • 如何使用C#的using语句释放资源?什么是IDisposable接口?与垃圾回收有什么关系?
  • HTML 字符实体
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_strerror_init()函数
  • 【c++】类与对象详解
  • nginx目录结构和配置文件
  • MacBook Pro(M1芯片)Qt环境配置
  • Kotlin 使用 Springboot 反射执行方法并自动传参
  • 网络安全技术简介
  • nginx 报错404
  • 【1.安装ubuntu22.04】
  • 【设计模式-行为型】备忘录模式
  • Linux环境下的Java项目部署技巧:安装 Mysql
  • 云原生(五十三) | SQL查询操作
  • 【前端知识】常用CSS样式举例
  • 硕成C语言1笔记
  • [SAP ABAP] Debug Skill
  • 理解 InnoDB 如何处理崩溃恢复
  • UE5 蓝图学习计划 - Day 8:触发器与交互事件
  • 根据接口规范封装网络请求和全局状态管理
  • Unet 改进:在encoder和decoder间加入TransformerBlock
  • work-stealing算法 ForkJoinPool
  • DeepSeek Janus-Pro:多模态AI模型的突破与创新
  • STM32-时钟树
  • hot100_21. 合并两个有序链表
  • 代码讲解系列-CV(一)——CV基础框架
  • C++ Primer 标准库类型string
  • 计算机网络安全与运维的关键 —— 常用端口全解析