Chinaunix

标题: struct结构长度问题 [打印本页]

作者: virtualsafety    时间: 2009-06-30 20:36
标题: struct结构长度问题
c头文件里有如下定义:
typedef unsigned int   ub4;
typedef unsigned short ub2;
typedef unsigned char  ub1;

typedef struct _cluster_key {
    ub2 curc;
    ub2 comc;
    ub4 pk1; /*previous key occurence in the form */
    ub2 pk2;
    ub4 nk1 ; /*next key occurence in the form */
    ub2 nk2 ;
} cluster_key_st;


我以为这个struct的长度为16个字节,结果printf("%d",sizeof(cluster_key_st))的结果是20。请问大家知道是啥原因不?
作者: bobcuer    时间: 2009-06-30 20:39
原帖由 virtualsafety 于 2009-6-30 20:36 发表
c头文件里有如下定义:
typedef unsigned int   ub4;
typedef unsigned short ub2;
typedef unsigned char  ub1;

typedef struct _cluster_key {
    ub2 curc;
    ub2 comc;
    ub4 pk1; /*previou ...


4字节对齐, 2+2+4+2+2pack+4+2+2pack
作者: virtualsafety    时间: 2009-06-30 20:49
标题: 回复 #2 bobcuer 的帖子
谢谢你,我把问题解决了
作者: aaaaa5aa    时间: 2009-06-30 23:16
4字节对齐, 2+2+4+2+2pack+4+2+2pack
还是没太看明白
作者: ubuntuer    时间: 2009-07-01 09:47
简单的字节对齐问题
作者: cheng_lai_shun    时间: 2009-07-01 14:25
字节对齐!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2