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

结构体对齐

结构体对齐的实际应用

例 1:默认对齐 vs #pragma pack(2)

#include <stdio.h>// 默认对齐(假设平台:char=1, short=2, int=4)
struct S1 
{char c;    // 地址0(对齐1)short s;   // 需对齐2 → 地址1不符合,填充1字节(地址1),s从地址2开始(占2-3)int i;     // 需对齐4 → 地址4开始(占4-7)
};// 强制2字节对齐
#pragma pack(2)
struct S2 
{char c;    // 地址0(对齐min(1,2)=1)short s;   // 对齐min(2,2)=2 → 地址1不符合,填充1字节(地址1),s从2开始(2-3)int i;     // 对齐min(4,2)=2 → 地址4是2的倍数,直接存放(4-7)
};
#pragma pack()int main() 
{printf("S1大小:%zu\n", sizeof(struct S1));  // 8字节(1+1+2+4=8,总对齐4)printf("S2大小:%zu\n", sizeof(struct S2));  // 8字节(同上,因总对齐为2,8是2的倍数)return 0;
}

说明:此处S1和S2大小相同,但对齐逻辑不同(S1总对齐 4,S2总对齐 2)。

例 2:#pragma pack(1) 紧凑布局(无填充)

强制 1 字节对齐,彻底消除填充

#pragma pack(1)
struct S3 
{char c;    // 地址0(对齐1)int i;     // 对齐min(4,1)=1 → 直接从地址1开始(1-4)double d;  // 对齐min(8,1)=1 → 从地址5开始(5-12)
};
#pragma pack()// 大小计算:1(c) + 4(i) + 8(d) = 13字节(无任何填充)
printf("S3大小:%zu\n", sizeof(struct S3));  // 13字节

适用场景:需要精确控制内存布局(如协议解析、硬件寄存器映射),但可能降低访问性能。

例 3:attribute((packed))(GCC/Clang)

效果等同于#pragma pack(1)

struct S4 
{char c;int i;short s;
} __attribute__((packed));  // 紧凑对齐// 大小:1 + 4 + 2 = 7字节(无填充)
printf("S4大小:%zu\n", sizeof(struct S4));  // 7字节

例 4:attribute((aligned(n))) 提高对齐要求

强制结构体按更大的对齐值布局(常用于需要高效访问的场景):

// 要求最小对齐16字节(即使成员最大对齐值小于16)
struct S5 
{int a;  // 4字节,默认对齐4char b; // 1字节,默认对齐1
} __attribute__((aligned(16)));// 成员总大小:4 + 1 = 5字节,需填充11字节满足16对齐
printf("S5大小:%zu\n", sizeof(struct S5));  // 16字节
http://www.gsyq.cn/news/40226.html

相关文章:

  • [OLAP] 技术选型对比:Clickhouse vs Doris
  • 计算天数
  • React 中 useCallback 的基本使用和原理解析
  • SpringCloud和K8s实现的微服务各有什么优缺点
  • 2025.11.4总结
  • 2025 年 11 月 EVA 厂家推荐排行榜,eva塑料,eva板材,eva卷材,eva发泡材料,eva橡塑制品公司推荐
  • 20251104 正睿
  • swagger-typescript-api
  • 2025 年 11 月电线电缆厂家推荐排行榜,国标电线电缆,中缆电线电缆,工程电线电缆,环保电线电缆,家用电线电缆,工业电线电缆,光伏电线电缆,耐火电线电缆公司推荐
  • HAL库DMA框架
  • 2025 年 11 月电线电缆厂家推荐排行榜,电力电缆,控制电缆,通信电缆,阻燃电缆,高压电缆公司推荐
  • 2025 年 11 月回信器厂家推荐排行榜,隔爆回信器,阀门回信器,防爆回信器,限位开关回信器,气动阀回信器,气动回信器公司推荐
  • 数据分析流程
  • 2025 年 11 月锅炉厂家推荐排行榜,有机热载体锅炉,导热油锅炉,生物质锅炉,蒸汽锅炉,燃天然气锅炉,热水锅炉公司推荐
  • 9.22 未完成的情感投射
  • 2025 年 11 月电磁阀厂家推荐排行榜,高压电磁阀,防爆电磁阀,比例电磁阀,汽车电磁阀,ABS电磁阀,ESP电磁阀,车用ESC电磁阀公司推荐
  • 请求库的封装
  • 用户登录系统
  • Java 内存模型(JMM)中 volatile 的作用与限制
  • 论文导读:从 TSMC ISSCC 看 SRAM 存算发展
  • edge chromium浏览器copilot图标消失处理
  • AI - 自然语言处理(NLP) - part 2 - 词向量 - 教程
  • 洛谷 P4577
  • [linux-mint] Surface Pro4 安装linux驱动
  • [B] AGC VP 记录
  • 2025年河南工业大学2025新生周赛(2)
  • Reflections on Trusting Trust by Ken Thompson
  • [Agent] ACE(Agentic Context Engineering)源码阅读笔记---(1)基础模块
  • 顺序结构及选择结构
  • 洛谷 P10894