c++实例研究

从0开始

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  104 随笔 :: 0 文章 :: 20 评论 :: 0 Trackbacks
#include <stdio.h>
#include 
<stdlib.h>

struct A
{
    int a;
    double b;
    char c;
    short d;
};

struct B
{
    double b;
    int a;
    char c;
    short d;
};

int main()
{
    printf("%d\n",sizeof(A));    
    printf("%d\n",sizeof(B));
    system("PAUSE");
    return 0;
}

对齐规则: 类型必须从类型size的整数倍开始,结构体size必须为结构体内类型最大的整数倍。
struct A: int 4 double 8 必须从8开始,故为16,char为17,short必须从2字节整数倍,从18开始,故为20,结构体必须为8的整数倍,所以必须为24。
struct B:double 8,int 4,char 1 对齐到14,从short开始2,一共为16
posted on 2010-11-27 11:05 elprup 阅读(414) 评论(1)  编辑 收藏 引用 所属分类: c++实例

评论

# re: struct对齐一题 2010-12-25 21:31 momo-erika
可以通过
#pragma pack(1) //cl/bcb下
__attribute((pack(1)))__ //gcc下
来设置压缩对齐  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理