728x90
반응형
https://www.geeksforgeeks.org/ 나 https://embetronicx.com/ 에서 재밌어 보이는 topic 들 위주로만 다루어 보고 있다.
struct 내에서 array 를 선언할 때 사이즈를 지정하지 않는 녀석으로 code size 관리에 유용하게 사용될 만 하다.
#include <stdio.h>
typedef struct
{
char data[14]; // 배열 사이즈 지정
char op;
char type;
} STT; // 일반 struct 선언
typedef struct
{
char op;
char type;
char data[]; // 배열 사이즈 미지정
} FAM_ST;
int main()
{
STT stt;
FAM_ST FST;
printf("Size of struct = %ld\r\n", sizeof(stt)); // 사이즈 확인
printf("Size of struct = %ld\r\n", sizeof(FST)); // 사이즈 확인
return 0;
}
해당 코드를 실행해 보면 아래와 같다.
Size of struct = 16 // char * 2 + char 14
Size of struct = 2 // char * 2, FAM 가산 없음
실제 해당 struct 를 사용할 때는 번거롭다. 별도 lib 로 만들어서 사용해야 할 듯 하다.
typedef struct
{
char op;
char type;
char data[]; // 배열 사이즈 미지정
} FAM_ST;
int main()
{
FAM_ST *FST = (FAM_ST *) malloc( sizeof(*FST) + (sizeof(char) * strlen("PARAM SIZE")) ); // struct + 배열 사이즈 지정하여 할당
FST->op = 28;
FST->type = 'R';
strcpy( FST->data, "Read10" ); // 할당한 배열보다 작은 사이즈를 넣어봄
printf("Size of struct = %ld\r\n", sizeof(FST)); // 사이즈 확인
free(FST); // malloc 을 사용해야 하므로 free 가 따라와야 하는 번거로움이 존재한다.
return 0;
}
해당 코드를 실행해 보면 아래와 같다.
Size of struct = 8 // char * 2 + "READ10" 6 byte
728x90
반응형
댓글