🤔 구조체의 크기 결정 이유
- 구조체의 크기는 기본 자료형 멤버 변수 중 가장 큰 자료형을 기준으로 한다.
- 사용자 정의 자료형의 크기는 기준으로 삼지 않는다.
- char[12]와 int가 있을 때 int형의 4byte를 기준으로 한다.
- 이유는 기본 자료형을 기준으로 하기 때문. 배열의 크기를 따로 기준으로 삼지 않는다.
- 변수들의 초기화 위치도 굉장히 중요하다.
- 작은 메모리의 자료형부터 선언해 줘야 메모리 절약을 할 수 있다.
- int 형(4byte)로 기준을 삼게 되면 4byte씩 담게 되고, 초과하면 새로운 4byte로 담는다.
ex. 같은 자료형이 있는 구조체라도 선언 위치에 따라 크기 변화 예시
😊 좋은 예시
struct tagInfo
{
char cName; // 1
short sNmae; // 2 -> 4byte 중 3byte 담음.
int iName; // 4
} -> 8byte
😢 잘못된 예시
struct tagInfo
{
char cName; // 1
int iName; // 4 -> cName을 담고 남은 3byte로 담을 수 없어 새로운 4byte로 담음.
short sName; // 2
} -> 12byte
🍎 번외
- 구조체의 기본 크기는?
struct MyStruct
{
};
struct MyStruct2
{
MyStruct ms;
};
int main()
{
cout << sizeof(MyStruct) << '\t' << sizeof(MyStruct2);
return 0;
}
- 출력 : 1 1
- 최소 저장 단위 1byte이다.
'컴퓨터 구조 > C, C++' 카테고리의 다른 글
C/C++ 동적 할당 (0) | 2024.08.18 |
---|---|
다중 포인터란 (0) | 2024.08.16 |
const와 포인터 (0) | 2024.08.09 |
[C/C++]포인터 기초 (0) | 2024.08.04 |
[C/C++] 함수란 (0) | 2024.07.31 |