|
버그는 아님니다..
C FAQ Q2.12 와 Q2.13을 참조 하세요.
다음과 같이 적혀 있네요 ^^;
"구조체는 필요한 경우 그와 같은 Padding공간을 포함 할수 있습니다.
이는 구조체가 배열로 만들어질때 Alignment 속성이 보존되도록 하기 위한 것입니다.
또 배열로 쓰이지 않을 경우애도 이러한 여분의 Padding이 남아 았을수 있습니다."
라고 적혀 있씁니다.
컴파일러 마다 이런 alignment를 조절할수 있는 옵션이 있다고 합니다.
참고로 빌더는
#pragma alignment를 사용할수도 있고...
컴파일 옵션중에 -an(n:1,2,4,8,16) 옵션으로도 할수 있다고 알고 있습니다.
그럼 수고하세요.
=================================================================================
김규겸 님이 쓰신 글 :
: 안녕하세요...
: 김규겸입니다...
:
: 우연히 구조체를 사용하다 보니 이상한 점이 있어 여쭈어 봅니다...
: cbuilder에서 개별 변수의 사이즈와 구조체를 사용시 전체 변수 합의 사이즈가 다릅니다...
: 이 문제는 short int형 사용시만 나타나는 문제인것 같습니다...
:
: 예를 들어
:
: short int 형의 크기는 sizeof(short int) = 2byte 입니다...
: int 형의 크기는 sizeof(int) = 4byte 입니다...
:
: struct test {
: short int a;
: int b;
: };
:
: 그러면 sizeof(test) = ?
: 2 + 4 bype 합인 6byte여야 할텐데 8byte 입니다...
: 구조체 사용시 short int형이 4byte로 잡히는것 같습니다...
:
: 이건 버그 맞겠죠...
:
: 누가 볼랜드에 얘기좀 해주세요...
: 버젼 6에서 해결해 달라구요...
:
: 요것 알아 내느라 며칠 고민했습니다....
:
: 김규겸 드림.
:
|