반응형

그렇다면 어떻게해야 

struct S

{

char c;

double d;

int i;

};


구조체 패킹을 없앨 수 있을까????




#pragma pack(push,1)

struct S

{

char c;

double d;

int i;

};

#pragma pack(pop)



이렇게하면 된다 !


#pragma pack(push,1)를 통해서


스택에 1Byte로 정렬하게된다.


그래서 

1 + 8 + 4 = 13byte가 나오게 되는것이다.!


다른 byte로 정렬하고 싶으면


1 대신에 2,4,8을 넣어주면 된다.



#pragma pack(pop)를 쓴 이유는


"내가 여기까지 구조체(클래스)의 바이트 패킹을 몇 바이트로 했는데 이제 이 전의 바이트패킹으로 되돌릴거야"

라는 것과 마찬가지 이다.


그래서 #pragma pack(pop)을 통해서 이 전의 바이트패킹으로 되돌릴 수 있다.







반응형

'프로그래밍 > C, C++' 카테고리의 다른 글

[C++] 데이터 자료형 정리 와 WORD, DWORD  (0) 2022.06.14
파일 입출력.(fseek, ftell, fwrite, fread)  (0) 2017.09.29
malloc과 new의 차이.  (0) 2017.09.07
2차원 배열 포인터  (0) 2017.09.07
#pragma pack - 1  (0) 2017.09.07

+ Recent posts