저는 프로젝트에서 데이터 구조를 사용하고 paricular 구조의 컨텍스트에서 구조체 패딩에 대한 의문점이 있습니다. 먼저 아래에 주어진 구조를보십시오. Visual Studio 2008 컴파일러를 사용합니다.C++의 구조체 패딩에 대해
typedef struct tagDATA_PACK
{
DWORD dDataLength;
BYTE bFlags;
BYTE bAttrib;
BYTE bOffset;
}DATA_PACK;
질문 1 : 위 구조의 크기는 얼마입니까? 8 바이트를 표시합니다. 맞습니다. 그러나,
은 아래에 주어진 수정 된 구조를 고려합니까?
typedef struct tagDATA_PACK
{
DWORD dDataLength;
BYTE bFlags;
}DATA_PACK;
여기서의 크기는 상기 8byte 구조와 동일하다. 제 생각에 여기 컴파일러가 여분의 3 바이트를 추가 할 것입니까? BYTE bFlags 이후 또는 그 이전입니까?
귀하의 모든 답변에 크게 감사드립니다.
는, 여분 패딩 바이트가 추가 장소를 추론 그렇지? – RyanAdamVeet
예, 컴파일러는 구조체를 레이아웃하는 방법을 결정합니다. –
실제로 기본적으로 하나의 합리적인 방법으로 만 수행 할 수있는 표준에 따른 많은 제약이 있습니다. –