结构体的大小超出了预期
结构体的大小超出了预期
这个问题已经有答案了:
我已经阅读了这个问题:C++ 中的结构体填充 和这个问题 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?
我知道这不是标准化的,但我仍然认为这是一个合理的问题。
为什么在 x64 系统上这个结构体的大小是16?
struct foo { char* b; char a;};
有效的大小应该是8 + 1 = 9,但我知道涉及到了填充。不管怎样,我认为只有有需要填充以达到 int
的大小,也就是其他 3 个字节共计 12 字节。
是否有任何理由,让这个特定的编译器(gcc)认为它应该拥有16个字节的大小?
猜测:最大的类型(例如 double 或在这种情况下的 x64 指针)是否会决定要使用的填充?
admin 更改状态以发布 2023年5月21日