GCC编译器是如何计算结构体的大小的啊
struct b{char c;
int a;
short b;
double d;
};
GCC的计算大小是20 ;
VC的计算大小是24
GCC编译器是如何计算结构体大小的啊?
是不是最后末尾的填充大小不计算的啊;
结构体默认的字节对齐一般满足三个准则:
(1)结构体变量的首地址能够被其最宽基本类型成员的大小所整除。
(2) 结构体每个成员相对于结构体首地址的偏移量(offset) 都是成员自身大小的整数倍,
如有需要,编译器会在成员之间加上填充字节(Internal Adding)。
(3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,
如有需要, 编译器会在最末一个成员之后加上填充字节(Trailing Padding)。
上面第三条对GCC是不是不管用啊????