패딩이란 ....
인텔 x86의 32비트 에서는 레지스터가 32비트로 이루워졌습니다 .
그래서 한번 메모리를 access 할려면 32 비트로 접근 하는게 빠르겠죠? ㅎㅎㅎ
그래서 구조체에서는 패딩이 이루워 집니다.
자 구조체를 선언해 보겠습니다.
struct List
{
int Data ;
char a;
double f;
int nData;
double b;
short c;
};
패딩이 안 이루워졌다고 전제 하에 메모리 크기는 4+1+8+4+8+2 이겠죠?
하지만 실제 메모리는 이렇게 안됩니다 .
가장 큰 비트를 기준으로 4비트씩 할당합니다 . 즉 여기서는 double 이 8비트임으로 8비트로
설정 됩니다.
4+1+(빈공간 3)+8 +4+(빈공간 4)+8+ 2 로 이런식으로 이루워집니다 ^^
자 그럼 패딩에 대해서도 좀 아시겠죠? ㅎㅎㅎ
패딩을 없애기 위한 방법으로는 #pragma pack(1) 이라는 전처리문이 있습니다 ^^
인텔 x86의 32비트 에서는 레지스터가 32비트로 이루워졌습니다 .
그래서 한번 메모리를 access 할려면 32 비트로 접근 하는게 빠르겠죠? ㅎㅎㅎ
그래서 구조체에서는 패딩이 이루워 집니다.
자 구조체를 선언해 보겠습니다.
struct List
{
int Data ;
char a;
double f;
int nData;
double b;
short c;
};
패딩이 안 이루워졌다고 전제 하에 메모리 크기는 4+1+8+4+8+2 이겠죠?
하지만 실제 메모리는 이렇게 안됩니다 .
가장 큰 비트를 기준으로 4비트씩 할당합니다 . 즉 여기서는 double 이 8비트임으로 8비트로
설정 됩니다.
4+1+(빈공간 3)+8 +4+(빈공간 4)+8+ 2 로 이런식으로 이루워집니다 ^^
자 그럼 패딩에 대해서도 좀 아시겠죠? ㅎㅎㅎ
패딩을 없애기 위한 방법으로는 #pragma pack(1) 이라는 전처리문이 있습니다 ^^
'Soft Ware > C 언어!!' 카테고리의 다른 글
file open 과 fileclose 에 대해서 (0) | 2012.01.30 |
---|---|
파일 입/출력을 공부 하기전 스트림에 대해서 !!! (0) | 2012.01.30 |
부동 소수점에 대해서 파헤쳐보았습니다 !!! (0) | 2012.01.27 |
realloc을 이용한 원형 리스트 입니다 (0) | 2012.01.13 |
퀵정렬 이해 및 소스 (0) | 2011.12.12 |