struct hack

카테고리 없음 2013. 1. 29. 10:55
배열 크기를 가변적으로 하고 싶을 때, 아래처럼 사용하는 경우가 많다. 두 개 이상의 
멤버를 갖는 구조체를 선언하고 마지막 멤버의 크기를 1 로 정의하면 마지막 멤버의
개수를 가변적으로 사용할 수 있다.

이 기법은 보통 struct hack 이라고 부른다. 하지만 이 방법은 Ansi C 에 정의되어 있지
않은 것이라고 한다.


struct A {
char aa1[10];
char aa2[20];
}
struct
B { char bb1[10];
char bb2[20];
 struct A a_struct[1]; }; struct B *p = malloc(sizeof(struct B) + (sizeof(struct A) * 100));


C 99 에서는 가변 크기 배열을 쓸 수 있다고 한다.


http://stackoverflow.com/questions/3711233/is-the-struct-hack-technically-undefined-behavior


를 참고.