sizeof数据对齐问题

#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

 

posted @ 2015-05-09 00:20  南哥的天下  阅读(265)  评论(0编辑  收藏  举报