| [ anonymous ] in KIDS 글 쓴 이(By): 아무개 (Who Knows ?) 날 짜 (Date): 2002년 8월 29일 목요일 오전 10시 36분 06초 제 목(Title): Re: [Q] C언어 구조체 공용체 크기 이상? 이상이 있는건 아닙니다. 그 싸이즈는 컴파일러를 어떻게 구현하느냐에 따라서 각각 다르게 나옮니다.. 그치만 다 그놈이 그놈이고 그머리가 그머리라서 다른 컴파일러라고 해도 비슷한 점이 훨씬 많은 것이죠. 보통 구조체의 메모리를 할당할때, built in type 멤버중에서 젤 큰놈을 align 기준으로 삼습니다. 거기에 작은 놈들을 끼워 맞추죠. 그리고 가장 작은 할당 단위는 프로그램언어상 1 byte인데 하드웨어 메모리 align 상으로 볼땐 보통 4 bytes입니다. 1바이트짜리 멤버 4개를 4 bytes에 한번에 구겨넣으면 하드웨어 동작시 속도가 느려집니다. 그래서 그냥 char 타입도 4바이트로 잡는 컴파일러가 많습니다. 속도를 우선시 한 것이죠. 그런데 메모리를 작게하는게 아주 중요하다 고 하면.. 구조체 메모리를 최대한도로 패킹해서 할당해주는 컴파일러도 있습니다. 컴파일 옵션으로 그렇게 할 수도 있구요.. 아님 매크로 같은걸 넣어서 그렇게 하기도 하는것 같습니다만 아쉽게도 제가 기억이 가물가물해서 확정적으로 말씀드리지는 못하겠네요. |