인프런 커뮤니티 질문&답변

leesiwon0305님의 프로필 이미지
leesiwon0305

작성한 질문수

홍정모의 따라하며 배우는 C언어

4.2 sizeof 연산자

4.2 sizeof 연산자

작성

·

290

2

강의 마지막에 구조체를 활용한 크기 계산에 대해서 설명해주신 부분에 대해서 궁금한 점이 생겨서 질문 남깁니다.

1.png

이렇게 하면,

2.png

콘솔창에서 8이 출력됩니다.

다른 자료형도 잘 되는지 궁금해서 float형을 double형으로 바꾸었더니 결과가 16이 나옵니다. double 형은 8bytes이고 int형은 4bytes이니까 12bytes가 나와야 하는 것이 아닌가요??

답변 1

1

안녕하세요, 답변 도우미 Soobak 입니다.

구조체의 Padding 이라는 개념과 관련이 있습니다.

Padding 은 컴퓨터의 메모리에서 특정 자료형을 특정 바이트의 경계에 정렬해야 더 효율적으로 메모리에 접근할 수 있기 때문에, 구조체 내 멤버들의 메모리 배치를 특정 형태로 정렬해주는 것입니다.
따라서, 구조체의 크기가 항상 각 멤버의 자료형 크기 합과 일치하지 않을 수 있습니다.

지금은 이러한 개념이 있다는 것만 인지하시고 학습을 이어나가시는 것을 추천드립니다.
관련된 내용은 추후 강의 14.3 구조체의 메모리 할당 에서 보다 자세하게 학습하시게 됩니다.

leesiwon0305님의 프로필 이미지
leesiwon0305
질문자

감사합니다!

leesiwon0305님의 프로필 이미지
leesiwon0305

작성한 질문수

질문하기