본문 바로가기
Study/C++

[C++] Pragma Pack n바이트 단위로 데이터 정렬하기

by 뿡뿡대마왕 2011. 9. 28.
반응형
출처: http://seungsuk.tistory.com/category/%EC%BB%B4%ED%93%A8%ED%84%B0/C++

struct test
{
int ntest;                         // 4byte
short nshort;                  // 2byte
};

sizeof(test)로 구조체의 크기를 보면 크기는 8로 나온다.

이유는 기본적으로 윈도우에서 4바이트로 정렬을 했기 때문이다.


#pragma pack(n)   n바이트로 데이터를 정렬한다.

#pragma pack() 원래 default 정렬 값으로 지정한다.

#pragma pack(1)
struct test
{
int ntest;                         // 4byte
short nshort;                  // 2byte
};
#pragma pack()

위와 같이 쓰고
sizeof(test)로 구조체의 크기를 보면 크기는 6으로 나온다.


C#의 [StructLayout(LayoutKind.Sequential,Pack = 1)] 구조체

#pragma pack(1) 구조체 #pragma pack()
는 
서로 같다고 할 수 있다

네트워크 프로그램의 프로토콜 구조체를 정의 할때 주로 사용한다.
반응형

댓글