C 마이크로프로세서 프로그래밍/Struct: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
Dolicom (토론 | 기여)
새 문서: C/C++ 프로그래밍 언어에서 구조화 된 데이터를 처리할 때 '''struct'''를 사용하는데 이를 '''구조체'''라고 한다. 구조화되었다는 말은 의미가...
 
Dolicom (토론 | 기여)
288번째 줄:
 
=== 일반적인 32비트 CPU에서의 struct 메모리 배치 예 ===
 
[[파일:Struct map exam1.png|thumb|200px|struct 메모리 배치 예 - 32비트 CPU (little-endian).]]
 
다음과 같은 예의 경우, 컴파일러는 모든 struct의 시작 주소를 4의 배수가 되도록 메모리의 위치를 잡는다.
줄 304 ⟶ 302:
struct Man man = { 19, 'M', 0x12345678, "Hong길동" , 100};
</source>
 
[[http://ko.wikipedia.org/wiki/파일:Struct map exam1Struct_map_exam1.png|thumb|200px|struct 메모리 배치 예 - 32비트 CPU (little-endian).]]
 
일반적으로 32비트의 little-endian CPU로 컴파일 하면, struct의 멤버의 메모리 배치는 그림과 같이 배치 된다. 정수형 int 사이에 char 변수는 4바이트 중에 한 바이트만을 사용하고 나머지 3바이트를 사용하지 않는다. 이것은 변수 id가 32비트 단위로 액세스 되어야 하므로 어쩔 수 없이 빈 공간을 넣는 방법으로 배치한 것이다. 이 struct의 크기는 빈공간 까지를 포함한 크기로 취급한다. <tt>sizeof(struct Man) == 28</tt>바이트가 된다.