sizeof数据对齐问题
来源:互联网 发布:linux rpm 路径 编辑:程序博客网 时间:2024/06/05 09:45
关于数据对齐问题,需要注意以下两点:
1)当成员变量的长度都小于处理器位数时,所有成员变量所占的总空间一定是最长的变量所占空间的整数倍;
2)如果某一成员变量长度大于处理器位数,则以处理器的位数为对齐单位;
示例程序和分析如下,
#include <iostream>using namespace std;struct A1{int a;static int b;};struct A2{int a;char c;};struct A3{float a;char c;};struct A4{float a;int b;char c;};struct A5{double d;float a;int b;char c;};void main(){cout<<sizeof(A1)<<endl;cout<<sizeof(A2)<<endl;cout<<sizeof(A3)<<endl;cout<<sizeof(A4)<<endl;cout<<sizeof(A5)<<endl;}
执行结果如下;
分析如下:
A1:sizeof只计算栈中分配的大小,而b是静态变量,位于全局数据区,所以不占用栈的空间,所以A1的大小只是a占用的空间,即4;
A2:数据对齐,int大小为4;char大小为1,扩展为4,所以A2为8;
A3:数据对齐:float大小为4;char大小为1,扩展为4,所以A3为8;
A4:数据对齐:float大小为4;int大小为4;char大小为1,扩展为4,所以A3为12;
A5:数据对齐:double大小为8;float大小为4,int大小为4,float和int共占8;char大小为1,考虑对齐,扩展为8;所以A4为24;
- sizeof数据对齐问题
- sizeof 数据对齐问题
- 数据对齐与sizeof()
- 数据对齐与sizeof
- 内存中的数据对齐与sizeof函数
- 结构体数据对齐,sizeof详解
- struct union数据对齐和sizeof大小
- C/C++的sizeof()以及数据对齐
- sizeof用法与编译器对齐的问题.
- sizeof用法与编译器对齐的问题
- ARM内存边界对齐以及sizeof问题
- 字节对齐、sizeof的问题分析
- sizeof(struct)--关于字节对齐的问题
- 字节对齐、sizeof的问题分析
- 结构体的sizeof字节对齐问题
- sizeof运算符的内存对齐问题
- ARM内存边界对齐以及sizeof问题
- sizeof()等等的内存对齐问题
- 如何让你Swing程序不卡死?
- XNA那些事(八)-WINDOWS PHONE游戏中的摄像机全总结
- 显示游标
- Part2:NCR RKT( 基于NDC)完整解决方案--NCR RKT流程
- AudioTrack实例代码 C++代码
- sizeof数据对齐问题
- 关于定时任务的一点思考(二)
- SVN入门及配置使用
- 在win下使用mkisofs
- SQL2000 统计每周,每月,每季,每年的数据
- js对象集锦.....(几个重要的但大家需要百度的)------------window对象
- 预装win7的限量版
- 数据库设计原则
- 一些Objective-C学习资源