2013-04-10 2 views
0

일부 컨텍스트 : iOS 앱 개발. Objective-C code in Xcode.이 C sizeof 함수는 다른 컨텍스트에서 다른 값을 표시하는 이유는 무엇입니까?

이 한 시간 동안 저를 혼란스럽게하고있다 :

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

GLKVector3GLKVector2가 GLKit 프레임 워크에서 발견되는 유형이 있습니다

나는 내가 만든 작은 구조체가있다. 여기

이상한되는 것이다 : EIVertex위한

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

크기는 48 하지만 44 (12 + 12 + 12 + 8 = 44) 일 것이다.

누군가이 크기 차이가있는 이유를 설명해주세요.

+0

메모리 레이아웃에 패딩이있을 수 있습니다. 패딩은 멤버의 주소가 일부 경계에 정확하게 정렬되도록하는 데 사용됩니다. 이 경우 가장 가능성이 높은 32 비트 경계입니다. –

답변

2

C의 구조는 데이터 정렬을 위해 채워지는 경향이 있습니다. 자세한 내용은 this page을 확인하십시오. 대답은 this question을 참조하십시오.