c언어 slack bytes

Slack bytes 사용 이유

마이크로 프로세서의 데이터 접근 속도 향상을 위해 사용된다.
데이터가 짝수 주소를 가질 때, 홀수 주소보다 접근 속도가 빠르다. 이를 위해 컴파일러가 메모리를 더 사용하더라도 slack byte를 구조체에 추가한다. 예를 들어, 구조체의 각 데이터에 2, 4, 8 .. 의 배수의 주소를 할당한다.

출처: GeeksforGeeks

slack bytes 때문에, 변수 순서만으로도 구조체 크기가 달라질 수 있다. (실행 환경에 따라 다름)

struct x {
	int a;   // four bytes
	char b;  // one byte
		 // three bytes slack
	int c;   // four bytes
		 // three bytes slack
	char d;  // one byte
} xx;

struct xy {
	int a;   // four bytes
	int c;   // four bytes
	char b;  // one byte
	char d;	 // one byte
		 // three bytes slack
} xxyy;

cout << sizeof(xx) << ' ' << sizeof(xxyy); // 16 12 출력

카테고리:

업데이트:

댓글남기기