구조체 멤버 채우기 및 맞춤Padding and Alignment of Structure Members

ANSI 3.5.2.1 구조체 멤버의 채우기 및 맞춤과 비트 필드가 저장소 단위 경계에 걸쳐 있을 수 있는지 여부ANSI 3.5.2.1 The padding and alignment of members of structures and whether a bit field can straddle a storage-unit boundary

구조체 멤버는 선언된 순서에 따라 순차적으로 저장됩니다. 즉, 첫 멤버가 가장 낮은 메모리 주소를 갖고 마지막 멤버가 가장 높은 주소를 갖습니다.Structure members are stored sequentially in the order in which they are declared: the first member has the lowest memory address and the last member the highest.

모든 데이터 개체에는 맞춤 요구 사항이 있습니다.Every data object has an alignment-requirement. 구조체, 공용 구조체 및 배열을 제외한 모든 데이터에 대한 맞춤 요구 사항은 개체의 크기 또는 현재 압축 크기(/Zp 또는 pack pragma 중에서 작은 것으로 지정됨)입니다.The alignment-requirement for all data except structures, unions, and arrays is either the size of the object or the current packing size (specified with either /Zp or the pack pragma, whichever is less). 구조체, 공용 구조체 및 배열에 대한 맞춤 요구 사항은 해당 멤버의 최대 맞춤 요구 사항입니다.For structures, unions, and arrays, the alignment-requirement is the largest alignment-requirement of its members. 다음과 같이 되도록 모든 개체에 오프셋이 할당됩니다.Every object is allocated an offset so that

offset % alignment-requirement == 0offset % alignment-requirement == 0

정수 계열 형식의 크기가 같으며 다음 비트 필드가 비트 필드의 일반 할당 요구 사항에 따라 적용되는 경계를 벗어나지 않고 현재 할당 단위에 맞는 경우 인접 비트 필드는 동일한 1, 2 또는 4바이트 할당 단위로 압축됩니다.Adjacent bit fields are packed into the same 1-, 2-, or 4-byte allocation unit if the integral types are the same size and if the next bit field fits into the current allocation unit without crossing the boundary imposed by the common alignment requirements of the bit fields.

참고 항목See Also

구조체, 공용 구조체, 열거형 및 비트 필드Structures, Unions, Enumerations, and Bit Fields