struct/class/union内存对齐原则
来源:互联网 发布:原油模拟软件 编辑:程序博客网 时间:2024/05/17 05:09
struct/class以及union内存对齐四个原则:
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/class/uinon。
2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部"最宽基本类型成员"的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)。
3、收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的"最宽基本类型成员"的整数倍.不足的要补齐.(基本类型不包括struct/class/uinon)。
4、sizeof(union),以结构里面size最大元素为union的size,因为在某一时刻,union只有一个成员真正存储于该地址。
测试用例:
总结:
从“struct/class以及union内存对齐原则”可以得出:在struct/class/union中定义变量时,长度小的变量先定义,长度大的变量后定义,可以节省内存。
参考:1.http://blog.csdn.net/hairetz/archive/2009/04/16/4084088.aspx
2.http://blog.csdn.net/yuesheng3707/archive/2009/10/23/4715721.aspx
- struct/class/union内存对齐原则
- struct/class/union内存对齐原则
- struct/class/union内存对齐原则
- struct/class/union内存对齐原则
- C/C++ struct/class/union内存对齐
- C/C++ struct/class/union内存对齐
- C/C++ struct/class/union内存对齐
- struct/class/union内存对齐原则及面试题实例分析
- struct union 内存对齐
- union struct 内存对齐
- struct/union内存对齐
- C/C++ struct/class/union内存对齐 [转]
- C/C++中 union/struct/class的内存对齐
- sizeof union struct 内存对齐
- sizeof union struct 内存对齐
- C/C++中关于struct和union的内存对齐原则
- sizeof (union) (struct) 内存对齐方式
- struct与union内存对齐方式
- JSP+Oracle 环境搭建4 -- 安装 Eclipse
- 常用网站后台与前台表单的有效性复杂验证(net+jqury+ajax)不用验证控件方法
- 常用网站后台与前台表单的有效性复杂验证(net+jqury+ajax)不用验证控件方法
- c++中随机数的生成(rand_s)的使用
- 实在搞不懂,本来很简单的事,为什么要非得弄几个类出来实现。。。
- struct/class/union内存对齐原则
- 精通Android应用开发第六篇:Toast、Notification、Alarm, Android中的通知实现
- 【转】RAID 0
- VS08工程的targetver.h
- eclipse时间不正确需要设置jvm的时区
- project小技巧:创建新视图
- JIRA 对用户密码加密的代码
- 穿越NAT总结(转载)
- [iphone开发私房菜_3_] Notification全面掌握