简简单单的答案,看例子。

本人机器64位,指针8字节;32位,指针4字节。

文件:sizeof.c

#include 
typedef struct SS{    char    name[131];    short   type;              int     size;              int     offset;            unsigned short     precision;                void    *data;                          #if 0}__attribute__ ((__packed__))AA;#else}ColAttr_t;#endifint main(int argc, char **argv){   printf("%d \n", sizeof(AA));    return 0;}

看似 151字节(#if 1 即可看出,attribute 紧凑字节网络用),实际160字节。

答案:是按照8字节对齐的,因为void * 是8字节,去掉void * 最大是4字节,即按照4字节对齐

分析:都是向 8字 节对齐。

    第一行,char cname[128]字节。

    第二行, 剩下3个字节和 short type ,组合占8字节。(一共占5字节,余3 放不下int类型)。

    第三行,int size和 int offset 组合占8字节。

    第四行,void * 由于64位占8字节。