我自己定义了一个typedef struct,如下:
typedef struct test
{
char            test1[21];
char            test2[21];
unsigned char   test3;
unsigned char   test4;
unsigned char   test5;
unsigned long   test6;
char            test7[148];
}TEST;
在程序中使用下面语句:
struct sgip_deliver *sg = new(SGIP_DELIVER);
int i;
i = sizeof(*sg);
结果 i = 200;
请问是什么原因啊
测试了很长时间了,老是比定义的多出3个字节

解决方案 »

  1.   

    typedef struct test
    {
    char            test1[21];
    char            test2[21];
    unsigned char   test3;
    unsigned char   test4;
    unsigned char   test5;
    unsigned long   test6;
    char            test7[148];
    }TEST;
    可能要求4字节对齐吧。你前面一共定义了21+21+3个char型,共45字节。要求4字节对齐的话,必须占用48个字节才行。因此需要浪费3个字节。
      

  2.   

    更改如下设置,保证实际占用字节与你定义的没有差别
    project->setting->c/c++category:code generationstruct member alignment:1 bytes