C中结构中的填充量是编译器相关还是定义良好?

pho*_*xis 4 c padding

C中的填充量是否struct在标准或编译器和/或目标体系结构中定义.我无法在标准中找到答案.

Oli*_*rth 7

它是实现定义的.从C99标准的第6.7.2.1节开始:

...结构或联合对象的每个非位字段成员都以适合其类型的实现定义方式对齐...

...结构对象中可能有未命名的填充,但不是在它的开头......

编译器通常会选择适合底层硬件的布局(将内容对齐以便于从内存中读取等).