안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.
제가 얼마전에도 헤맸던 문제군요. data boundary alignment 때문입니다.
구조체의 크기는 현재 프로젝트에서 지정된 data alignment 단위로 결정됩니다.
이 단위는, 1바이트, 2바이트, 4바이트, 8바이트, 이런식이죠.
구조체 내에 선언한 각 멤버들의 순서와 크기에 따라 결과가 달라지기도 하는데,
어쨌든 sizeof()연산자가 정확히 동작하도록 하기 위해서는 이 얼라인먼트를
1바이트로 잡는 수밖에 없습니다. 물론 이 경우에 프로그램 속도는 조금
느려집니다.
이 옵션은, 프로젝트 옵션에서 어드밴스드 컴파일러이던가.. 에 보면 라이오그룹이
있습니다. 거기서 설정하면 됩니다.
그럼 참고하시길...
독립문에서 임펠리테리였습니다.
(cbuilder, cbuilder@thrunet.com)
|