为什么这个C sizeof函数在不同的上下文中显示不同的值?

时间:2013-04-10 23:37:06

标签: c sizeof

某些背景:iOS应用开发。 Xcode中的Objective-C代码。

这个让我困惑了几个小时:

我创建了一个小结构:

struct EIVertex {
    GLKVector3      P;
    GLKVector3      N;
    GLKVector3      barycentric;
    GLKVector2      st;
};

GLKVector3GLKVector2是GLKit框架中的类型。

这就是奇怪的事情:

sizeof(GLKVector2) = 8
sizeof(GLKVector3) = 12
sizeof(EIVertex) = 48

EIVertex的尺寸为 48 44 (12 + 12 + 12 + 8 = 44)。

有人可以解释为什么会出现这种大小差异吗?

1 个答案:

答案 0 :(得分:2)

C中的结构倾向于填充以进行数据对齐。有关详细信息,请查看this page。另请参阅this question中的答案。