컴퓨터 구조/C, C++

구조체 크기 계산법 및 최적화

JiHxxn 2024. 8. 12. 00:06

🤔 구조체의 크기 결정 이유

  • 구조체의 크기는 기본 자료형 멤버 변수 중 가장 큰 자료형을 기준으로 한다.
    • 사용자 정의 자료형의 크기는 기준으로 삼지 않는다.
  • 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