有个问题不明白
struct stru{
int a:3;
short b:3;
int c:20;
int d;
};
sizeof(stru)=16;
而
struct stru{
int a:3;
int b:3; //或改为long b:3;或unsigned b:3;结果一样
int c:20;
int d;
};
sizeof(stru)=8;
...全文
1724打赏收藏
请教内存对齐的问题
有个问题不明白 struct stru{ int a:3; short b:3; int c:20; int d; }; sizeof(stru)=16; 而 struct stru{ int a:3; int b:3; //或改为long b:3;或unsigned b:3;结果一样 int c:20; int d; }; sizeof(stru)=8;
第一个:
int a:3//1 byte
short b:3//因类型不同, 从下一个4字节处开始, 1byte
int c:20//因与上面类型不同, 从下一个4字节处开始, 3byte
int d;//类型相同, 但是不是位域, 也从下一个4字节开始
所以是16.
相当于:
int a:3;
int :29;