본문 바로가기
dev/C

[C] struct 변수선언과 메모리 할당

by seohan1010 2024. 7. 3.

 

 

위와 같이 변수가 선언되어 있을때

struct의 크기는 자료형이 가장 큰

int 형의 크기인 4byte를 기준으로

4*7=28

즉, 28이 될것만 같다.

 

 

 

 

 

 

하지만 크기는 16이된다.

잘 보면 char a의  주소는 "0"으로

다음 int b의 주소인 "4"까지

패딩이 포함된 크기를 가지고 있다.

int b이후의 연속된 char c,d,e,f는

주소가 1byte씩 늘어나는 것을 확인할수 있다.

 

후기

아마도 선언된 struct에 메모리를 할당해줄때

가장 큰 자료형을 가진 변수를 기준으로 메모리를

할당해, 자료형의 크기가 작은 

변수에 패딩을 추가해 주지만,

연속된 변수들의 자료형의 크기가

 struct에 선언된 가장 큰 자료형의 크기보다 작고

 연속된 변수의 합이 가장 큰 자료형의 크기와

같을때 패딩을 추가해 주지 않는 것 같다.

 

느낀점

컴퓨터 (특히 메모리)와

친숙해져 가는거 같다.