Alignment Requirement (정렬 제한)

MySprtlty·2022년 8월 1일
0

C

목록 보기
21/37

🏷️Alignment Requirement(정렬 제한)

  • 메모리로의 효과적인 접근을 위해 or 그럴 수 밖에 없는 상황에서 implementation이 특정 데이터형의 대상체를 특정 정수의 배수에 해당하는 번지에 위치시키는 것.
  • 이 때문에 서로 다른 포인터 타입간의 변환은 alignment requirement을 위반할 경우 결과는 정의되지 않는다.
  • 🔍ex)
char c;
int *pi;
pi = (int *)&c; /*wrong*/
  • 만약 int가 4의 배수 번지로 정렬되도록 요구하는 implementation이라면, &c의 주소값이 4의 배수가 아닌 상태에서 위의 변환 문제를 일으킬 것이다.
  • 결론은 어떠한 데이터형이든 다른 데이터형 사이의 포인터 변환은 alignment requirement를 위반할 수 있기 때문에 이식성을 갖지 못한다.

0개의 댓글