VC中字节对齐的问题:
struct test
{
char a;
int  b;
char c;
char d;
}; int i=sizeof(as);
TRACE("i=%d",i);
 对齐方式        大小      问题
   1BYTE          7
   2BYTE          8
   4BYTE          12
   8BYTE          12        应为8?
   16BYTE         12        应为16?想不通,为什么?

解决方案 »

  1.   

    int i=sizeof(as);
    应为
    int i=sizeof(test);
      

  2.   

    你是32位系统吧。 int 4字节。 char 1字节。
    因此4字节以上对齐时,
    a占4字节, b占4字节。cd合在一起占4字节。8字节对齐时, 后面要再补4字节保证整个结构是16字节, 8的倍数。
    16字节对齐时, 同上。
      

  3.   

    8BYTE          12        应为8?
       16BYTE         12        应为16?
    这是12是因为你的操作系统的原因,你的操作系统是32位的,所以不可能超过4的倍数
      

  4.   

    to isdong:
    那么在64八位的操作系统上是这样的吗? 对齐方式        大小(32os)    大小(640s) 
       1BYTE          7     7
       2BYTE          8             8
       4BYTE          12            12
       8BYTE          12            8
       16BYTE         12            8