1 답변
-
C FAQ에 있는걸 번역해드릴게요
보통의 32비트(8바이트) 프로세서는 2, 4바이트 같은 크기로는 접근할 수 없습니다.
다음과 같은 struct가 주어질 때
struct { char a[3]; short int b; long int c; char d[3]; };
메모리가 아래와 같이 잡힌다고 생각하시겠지만(12바이트):
+-------+-------+-------+-------+ | a | b | +-------+-------+-------+-------+ | b | c | +-------+-------+-------+-------+ | c | d | +-------+-------+-------+-------+
프로세서는 다음과 같이 접근하는 게 더 편합니다(12바이트):
+-------+-------+-------+ | a | +-------+-------+-------+ | b | +-------+-------+-------+-------+ | c | +-------+-------+-------+-------+ | d | +-------+-------+-------+
이것도 프로세서한테 별로 좋은 방법은 아닙니다. a,b,d가 8바이트로 꽉 차지 않았으니까요 그래서 대부분 컴파일러는 남는 부분을 채워줍니다. 이걸 pad라고 하지요. pad한 결과는 다음과 같이 나타납니다.
+-------+-------+-------+-------+ | a | pad1 | +-------+-------+-------+-------+ | b | pad2 | +-------+-------+-------+-------+ | c | +-------+-------+-------+-------+ | d | pad3 | +-------+-------+-------+-------+
댓글 입력