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?想不通,为什么?
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?想不通,为什么?
应为
int i=sizeof(test);
因此4字节以上对齐时,
a占4字节, b占4字节。cd合在一起占4字节。8字节对齐时, 后面要再补4字节保证整个结构是16字节, 8的倍数。
16字节对齐时, 同上。
16BYTE 12 应为16?
这是12是因为你的操作系统的原因,你的操作系统是32位的,所以不可能超过4的倍数
那么在64八位的操作系统上是这样的吗? 对齐方式 大小(32os) 大小(640s)
1BYTE 7 7
2BYTE 8 8
4BYTE 12 12
8BYTE 12 8
16BYTE 12 8