MyStruct의 구조체 사이즈는 몇일까?

 

int형은 4byte, char형은 1byte, short형은 2byte여서

총 7byte라고 생각하는가?

 

정답은 8byte다.

 

왜 그럴까요?

 

구조체는 구조체 변수들 중에 제일 큰 사이즈의 자료형을 기준으로 메모리가 늘어난다.

int형이 제일 큰 사이즈이므로 4byte 단위로 메모리가 늘어난다.

 

메모리를 그림으로 표현하자

c와 s가 추가됨에 따라 3byte가 아닌 제일 큰 사이즈인 4byte로 늘어난 것을 볼 수 있다.

아래와 같을 경우는 어떨까?

제일 큰 사이즈는 int형인 4byte이다.

그럼 4바이트씩 늘어나면 구조체의 크기는 몇일까?

 

아래 사진과 같이 할당돼서 사이즈가 12byte라고 생각하는가?

 

 

정답은 16byte다.

 

왜?

아래와 같이 할당되기 때문이다. 1byte의 c가 할당되고 4byte의 i2가 할당될 때 바로 옆에다 할당되지 않는다.

이렇게 되면 사이에 안 쓰는 메모리가 있으므로 메모리 낭비라고 할 수 있다.

 

그럼 메모리 낭비를 하지 않기 위해 어떤 방법을 이용해야 할까?

 

사이즈가 큰 자료형부터 위에다가 순서대로 선언해줘서 메모리를 아끼자.

 

+ Recent posts