프로그래밍

 3198, 1/160 회원가입  로그인  
   rocket07
   http://--
   구조체 질문~

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3324 [복사]


#include <stdio.h>


struct AA
{
        int a;
        char b;
        int c;
};

int main()
{
        struct AA zz = {3, 'd', 5};


        printf("zz.a : 0x%x\tzz.b : 0x%x\tzz.c : 0x%x\n", &zz.a, &zz.b, &zz.c);

        
        return 0;
}

요래노코 struct AA 형인 zz 변수의 멤버인 a, b, c  각각의 메모리 주소를 알아봤는데요, 이거 컴파일해서 실행해보면  

zz.a : 0x1ef9cc     zz.b : 0x1ef9d0      zz.c : 0x1ef9d4  

이렇게 나와요. 제가 궁금한건 char 형인 b 멤버는 크기가 1바이트여야 하는게 아닌가요? 왜 멤버 c와 b의 메모리 주소 차이가 4바이트가 나는지 이해가 안되네요

  Hit : 3557     Date : 2012/03/03 12:58



    
chaser1963 아마도 byte alignment 때문일거에요
32bit 머신을 쓰시나보네요?
일반적으로 윈도우에선 4바이트 즉 워드단위
리눅스에선 8바이트 더블워드단위로 메모리가 할당되는걸로 알고있스무니다.
자세한건 운영체제별 byte align이라고 찾아보세요 ~
2012/03/04  
rocket07 chaser1963님 좋은답변 감사합니다ㅎㅎ 2012/03/08