码迷,mamicode.com
首页 > 其他好文 > 详细

sizeof数据对齐问题

时间:2015-05-09 06:28:17      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

#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

 

sizeof数据对齐问题

标签:

原文地址:http://www.cnblogs.com/leijiangtao/p/4489226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!