为什么这个C sizeof函数在不同的上下文中显示不同的值?
一些背景:iOS应用程序开发。Xcode中的Objective-C代码 这件事让我困惑了好几个小时: 我创建了一个小结构:为什么这个C sizeof函数在不同的上下文中显示不同的值?,c,sizeof,C,Sizeof,一些背景:iOS应用程序开发。Xcode中的Objective-C代码 这件事让我困惑了好几个小时: 我创建了一个小结构: struct EIVertex { GLKVector3 P; GLKVector3 N; GLKVector3 barycentric; GLKVector2 st; }; GLKVector3和GLKVector2是在GLKit框架中找到的类型 奇怪的是: sizeof(GLKVector2) =
struct EIVertex {
GLKVector3 P;
GLKVector3 N;
GLKVector3 barycentric;
GLKVector2 st;
};
GLKVector3
和GLKVector2
是在GLKit框架中找到的类型
奇怪的是:
sizeof(GLKVector2) = 8
sizeof(GLKVector3) = 12
sizeof(EIVertex) = 48
EIVertex
的大小为48,但应为44(12+12+12+8=44)
有人能解释一下为什么会有这种大小差异吗?C中的结构倾向于填充数据对齐。查看更多信息。另请参阅中的答案。内存布局中可能存在填充。填充用于使成员的地址正确对齐到某些边界。在这种情况下,最有可能是32位边界。