qlw319 发表于 2013-11-22 15:55:04

C中sizeof问题

大侠们,帮忙解决一个问题:
typedef struct A{
          char a;
          char b;
          short c;
};
typedef struct B{
          char a;
          short b;
          char c;
};
为什么A和B的size不同?求解。

苹果沃珂 发表于 2013-11-22 16:30:58

这是内存对齐与内存补齐的问题

qlw319 发表于 2013-11-22 16:50:22

苹果沃珂 发表于 2013-11-22 16:30 static/image/common/back.gif
这是内存对齐与内存补齐的问题

谢谢,但如果里面再加一个int值:
typedef struct A
{
        int i;
        char a;
        short s;
        char b;
}a;
typedef struct B
{
        int i;
        char a;
        char b;
        short s;
}b;
为什么sizeof(a)是12
sizeof(b)是8
也就是说为什么A中的char b为什么不能补到short s后面合并成一个四字节,而是重新开辟了一个字节
导致其sizeof为12?麻烦了。
页: [1]
查看完整版本: C中sizeof问题