-
Struct hack
struct data { int data; double somedata; char arr[0]; //<-- struct hack }
-
struct의 마지막 변수를 가변적으로 운영 가능하도록 해줌.
-
마지막 arr변수를 SIZE만큼 가지고싶을때
struct data *data = (struct data*)malloc(sizeof(struct data) + sizeof(char)*SIZE)
로 선언한다면struct data { int data; double somedata; char arr[SIZE]; //<-- struct hack }
-
위와 같이 활용 가능, 마지막 변수에만 적용
-
char arr[0], char* arr둘의 차이점
arr[0]
같은 경우 구조체의 뒤쪽에 연속해서 자리하기때문에 1번의 memcpy로 복사가 가능*arr
의 경우 malloc, memcpy, free를 두번 해야하는 번거로움
-
char arr[1], char arr[0]의 차이
- C89의 문법에서 undefined상황으로 char arr[1]을 사용하게됨.
- C99부터는 arr[0]을 "flexible array member"
-
-
ref
-
-
Save hyunjun/2f4e666278435e37567a0656ab2c616a to your computer and use it in GitHub Desktop.
C struct hack
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment