티스토리 뷰

안녕하세요, IT디자이너입니다. 

 

 

이번에는 구조체의 패딩값을 조절하는 방법에 관하여 포스팅하도록 하겠습니다.

 

저번 포스팅 "C언어 구조체의 숨겨진 특징"에서 구조체를 선언 시 캐시hit율을 높이기 위해 멤버변수 정의 순서에 따라서 패딩공간이 할당된다고 언급하였습니다.

 

이번에는 그 패딩 공간을 컨트롤하는 방법에 관하여 포스팅 하도록 하겠습니다. 

 

- #pragma pack(1), #pragma pack()

#include <iostream>

#pragma pack(1)
struct Data {

    char a;
    int b;

};
#pragma pack()

int main()
{
    Data da = { 1,2 };
}

위 코드처럼 #pragma pack(1)을 선언하여 구조체의 패딩값을 1byte 단위로 하여 없앨 수 있습니다.

 

또한 #pragma pack()으로 해당 영역을 결정지어 주어야 합니다. 만약 #pragma pack()을 작성하지 않을 경우

#pragma pack(1) 밑으로 모든 코드가 1byte 단위로 정렬되기 때문에 꼭 #pragma pack()으로 닫아주어야 합니다.!!!

 

 

이렇게 1byte 단위로 정렬을 시키는 이유는 바로 네트워크 패킷의 수를 줄이기 위해서입니다. 무수히 많은 트래픽이 

있는 가운데에 조금이라도 데이터를 줄임으로서 엄청난 금액을 아낄 수 있기 때문입니다. 

 


 

간단하게 구조체 패딩을 컨트롤 하는 방법과 이유를 설명드렸습니다.

 

IT디자이너였습니다. 감사합니다.  

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함