Introfor

Byte padding 본문

Doing/C&C++

Byte padding

YongArtist 2020. 9. 7. 22:16

cpp을 처음 공부하면서 C에 대한 내용도 다시 복습하고 있다.

구조체 부분을 학습하면서 구조체는 사용자 정의 타입으로 여러 데이터 타입을 하나의 타입으로 지정할 수 있다.
그러면 이 구조체는 메모리에 어떠한 구조로 저장되는지 궁금하다. (궁금하지 않더라고 알면 좋다.)

code

위 소스코드를 아래에서 메모리와 매칭된 그림을 확인할 수 있다.

구조체 메모리 구조 (TCPschool.com)

컴파일러는 프로그램의 속도를 향상시키기 위해 구조체를 메모리에 할당할 때 바이트 패딩(Byte Padding) 규칙을 사용한다. 이 규칙은 구조체 멤버 변수 중 크기가 가장 큰 멤버 변수를 기준으로 나머지 멤버 변수를 할당한다.

위 그림에서 보면 char, int, double 타입이 선언된 것을 알 수 있는데 이 중 8byte를 가지는 duble의 크기가 가장 크므로 double과 동일한 크기에 8byte를 할당해서 나머지 char, int 타입을 할당한다. 

8byte에 char(1byte), int(4byte)로 할당하면 남은 3byte가 바이트 패딩이 된다. 그러면 위의 구조체가 선언되었을 시, 총 16byte를 사용한다는 것을 알 수 있다.

 

'Doing > C&C++' 카테고리의 다른 글

[Recursion] Counting Cells in a Blob  (0) 2020.07.30
Recursion. 미로찾기  (0) 2020.07.28
[data_structure] Linked List  (0) 2020.07.26
[Algorithm] sequential Search  (0) 2020.07.01
[C++] Reference  (0) 2020.06.29
Comments