您的位置:首页 > 其它

sizeof数据对齐问题

2015-05-09 00:20 260 查看
#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;

转载自:http://blog.csdn.net/tangbo1987/article/details/6766918
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: