Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个C sizeof函数在不同的上下文中显示不同的值?_C_Sizeof - Fatal编程技术网

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

为什么这个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) =

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

这件事让我困惑了好几个小时:

我创建了一个小结构:

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位边界。