GCC的内存边界对齐
2015-01-19 17:34
295 查看
GCC有三种影响内存对齐的开关:
首先是命令行参数 –fpack_struct=n (n只可以是1,2,4,8等2的幂,而且要小于平台默认的对齐字节数,否则不会生效)
其次是#pragma pack(n) (取值同上述一样,否则也不会生效,而且不怎么会有提示,编译器会有警告)
最有效的则是 __attribute__((aligned(n))) 这个n也是2的幂,但是没有平台的约束限制
首先是命令行参数 –fpack_struct=n (n只可以是1,2,4,8等2的幂,而且要小于平台默认的对齐字节数,否则不会生效)
其次是#pragma pack(n) (取值同上述一样,否则也不会生效,而且不怎么会有提示,编译器会有警告)
最有效的则是 __attribute__((aligned(n))) 这个n也是2的幂,但是没有平台的约束限制
相关文章推荐
- Arm结构体gcc内存边界对齐问题(zt)
- [B原创] Arm/x86结构体gcc内存边界对齐问题
- C语言之gcc中支持的内存对齐指令
- 数据结构内存边界对齐的三条原则 - jcwKyl的专栏 - CSDN博客
- gcc 中的"__attribute__ ((packed))" gcc移植,内存对齐.结构体对齐-转
- 关于 struct 和 union 存储时内存边界对齐的问题(二)
- 为什么要内存对齐?字节对齐和边界对齐介绍。
- 关于gcc中内存对齐的c写法(attribute)
- c#编程指南(十二) 平台调用P-INVOKE完全掌握, 结构体边界对齐和内存布局
- gcc 中结构体(struct)内存对齐问题分析
- 数据结构内存边界对齐的三条原则
- 数据结构内存边界对齐的三条原则
- struct内存对齐:gcc与VC的差别
- GCC 内存对齐
- 结构体内存对齐规则总结-整体单个排列/成员之间没有边界只有最后的填充/最后是最大类型整数倍
- gcc 中的"__attribute__ ((packed))" gcc移植,内存对齐.结构体对齐
- ARM内存边界对齐以及sizeof问题
- struct内存对齐:gcc与VC的差别
- 平台调用P-INVOKE完全掌握, 结构体边界对齐和内存布局
- 内存对齐的问题