Slack bytes
최적화된 컴파일러는 데이터에 빠르게 접근할 수 있도록하기 위해서 항상 짝수 주소를 구조체의 맴버에게 할당한다. 짝수 주소는 2,4,8,16의 배수일 수 있다. 이것은 일부 멤버의 사이에 사용되지 않는 bytes나 구멍을 발생시킨다. 이러한 사용되지 않은 byte 또는 구조체의 멤버 사이의 구멍을 Slack bytes 라 한다.
P.S Padding byte랑 Slack byte랑은 다른 개념인가? 똑같아보이는데..
struct EMPLOYEE
{
char name[8]; // 8byte
int id; // 4byte (slack byte : 4byte)
double salary; //8byte
};
sizeof(EMPLOYEE) : 24
Union(공용체)의 경우, Union에 변수가 있다면 컴파일러는 가장 큰 메모리의 크기를 고려하여 메모리를 할당한다. 그래서 Union의 size는 가장 큰 멤버의 size와 동일하다.
union EMPLOYEE {
char name[8];
int id;
double salary; //8byte인 double형을 기준으로 size를 잡는다.
};
sizeof(EMPLOYEE) : 8