typedef struct 선언 시, 변수 선언에 대한 메모리 공간 크기에 대해서 알아보자.
- char : 1 byte
- int : 4 byte
- double : 8 byte
- pointer : (32bit) 4 byte, (64bit) 8 byte
sizeof 를 통해서 변수의 사이즈를 알 수 있다.
typedef struct student {
char a;
int b;
}S;
void main() {
printf("메모리 크기 = %d/n", sizeof(S)); // 8
}
char + int 해서 5 byte일 것 같지만 8 byte이다.
어떠한 연고로?
가장 큰 자료형 크기의 배수로 정렬한다
int 형이 4 byte이고 구조체의 멤버변수 중 제일 크게 차지하기 때문에 4 byte 단위의 메모리를 잡게 된다.
// 1)
typedef struct student1 {
char a;
char c;
int b;
}S1;
// 2)
typedef struct student2 {
char a;
int b;
char c;
}S2;
void main() {
printf("메모리 크기 = %d/n", sizeof(S1)); // 8
printf("메모리 크기 = %d/n", sizeof(S2)); // 12
}
같은 멤버변수로 구성된 구조체이지만 위치함에 따라서 메모리를 다르게 잡아먹는다.
'C언어' 카테고리의 다른 글
[C]void 포인터에 자료형 할당하기 (0) | 2022.04.19 |
---|---|
[C] 문자열 포인터와 문자열 배열 정리 (0) | 2022.04.19 |