结构体对齐方法应用与解析

概述

各个硬件平台对存储空间的处理上有很大的不同。客户代码从8051或arm系列移植到APT芯片时会遇到优化存储空间,适配特定CPU取址方式问题,结构体对齐正确的使用尤为重要。

结构体对齐规则

  • 结构体(struct)的数据成员,第一个数据成员存放的地址为结构体变量偏移量为0的地址处。

  • 其他结构体成员自身对齐时,存放的地址为min{有效对齐值为自身对齐值, 指定对齐值}最小整数倍的地址处。

  • 总体对齐时,字节大小是min{所有成员中自身对齐值最大的, 指定对齐值} 的整数倍。

使用结构体对齐的配置步骤:

  1. 程序中包含 stdio.h 头文件。

  2. 调用#pragma pack(N),N=1,2,4,8。

  3. 不同结构体,不同的对齐方式重新调用#pragma pack(N)即可。

实例分析:

1、CDK默认对齐(4字节)

操作代码:

占用空间解析:

2、1字节对齐

操作代码:

占用空间解析:

3、2字节对齐

操作代码:

占用空间:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值