采用以下结构:
struct s {
char c; // 1 byte
long l; // 8 bytes
};
C将在c
和l
之间添加7个字节的填充,使得结构16的大小和结构8的对齐。如果我告诉编译器打包结构,那么如何对齐评估?它只是放弃并使对齐1个字节吗?
修改
此问题与Struct Padding and Packing不重复。我问的是如何评估打包结构的对齐方式。不是如何填充或如何评估常规结构的对齐。如果上述结构填充,则其大小为16,对齐 8 - 其最大成员(long
)的对齐方式。如果打包,则其大小为9个字节,并且对齐?字节。