我已经阅读了这个问题:C++中的结构填充 和 这个问题 为什么对于一个结构体,sizeof不等于每个成员变量的sizeof之和?
虽然我知道这并非标准,但我认为这是一个合理的问题。
为什么在x64系统上这个结构体的大小是16?
struct foo { char* b; char a;};
有效大小应该是8 + 1 = 9,但我知道有填充物参与其中。不管怎样,我认为 'a' 只会被填充到达到 'int' 的大小,即其他3个字节共计12个字节。
有没有任何特定编译器(gcc)认为它应该具有16个字节的大小的原因?
猜测:最大类型(例如double或在这种情况下的x64指针)是否会决定要使用的填充?