|
안녕하세요^^ 소리랍니다!
음..sizeof()의..버그라고..말씀하셨는데요..
천만의..말씀입니다!
그건..그렇게..나오는..것이..당연합니다!
윈도우에서는..메모리를..32Bit 즉..4바이트단위로..할당하기..땜에..
나오는..현상입니다..
아마도..ch1의 크기를..6으로..하셔도 36이라구..나올것입니다..
만약..ch1을 9로하면..생각하기에..37이..나올것 같지만..40이..나오게..됩니다!
그렇게..하는..이유는.메모리..관리와..관련해서..깊은..뜻이..있습니다..
만약..향기님께서..원하는..결과를..돌출코자..한다면..
Project Options -> Advanced Compiler->Data Alignment를 Byte로 선택하세요..
그러면..아마..원하는..결과를..얻을것입니다..단..요렇게..하면..프로그램..
수행속도는..그렇게..티가 나지는..않겠지만..아마도..느려질 것입니다1
그럼...도움이..되었기를...
- Irvine에서 소리였습니다!
향기 님이 쓰신 글 :
: struct TTest {
: int i;
: float f;
: char ch1[5];
: char ch2[20];
: } Test;
:
: window 에서
:
: sizeof(Test.i) = 4
: sizeof(Test.f) = 4
: sizeof(Test.ch1) = 5
: sizeof(Test.ch2) = 20
:
: 인것은 너무나 당연하죠! 그런데
: sizeof(Test) 하면 값이 36 이 나옵니다.
:
: 4 + 4 + 5 + 20 = 33 이 되어야 되지 않겠습니까?
:
:
: 빌더 4도 똑같이 나옵니다.
:
: 도스에서 해봤더니
: 31 이 나오더군요.. 왜냐면 sizeof(i) = 2 기때문이죠.. int 를 long 으로 바꾸니
: 33 이 나오는 군요..
:
:
: 제 생각엔 빌더 자체의 버그던지 아니면 sizeof 의 bug 인것 같습니다.
:
: 제 컴만 이상한가요? 빌더 사용자 여러분들 Test 좀 부탁드립니다.
:
: 화일을 올리려고 했더니.. 어디다 올리죠?
|