C언어 자료형 크기 질문이요..
글쓴이: spingferry / 작성시간: 토, 2013/12/28 - 1:54오후
C언어 아 너무 답답해서 질문 올립니다.
C언어 자료형 int, long 같은 경우 컴파일을 32bit,64bit으로 하느냐에 따라서. 자료형이 달라진다고 알고있습니다.
그래서, 확인을 하기 위해서..
Visual studio 2013 을 받아서..
32bit 컴파일 때와 64bit 컴파일을 돌릴때,
sizeof 실행시.... 도두다 4byte로 나옵니다.
하지만, 인터넷 검색이나, 답변을 찾아보면... 분명히 64bit 컴파일 환경일때는... long은 8byte가 나와야 되는데요.
그래서... 제가 무엇인가 잘못 설정했나해서?
구조체 하나를 선언했습니다.
struct test{
long a;
char *b;
void(*test_fn)(int);
}
32bit 환경에서 구조체 크기를 찍어보면
long 4, char 포인터 4, 함수포인터 4해서.. 12가 찍힙니다.
64bit 환경에서 구조체 크기를 찍오보면
long8, char 포인터 8, 함수포인터 8해서.. 24가 찍힙니다.
그래서 어?문제없네..해서..
구조체의 변수중에 long만 남기고 나머지를 주석처리하고..
다시 sizeof를 찍어봤습니다.
근데 32bit든, 64bit든 4byte가 나오는겁니다?
도대체 왜그런거죠??
이유를 모르겠습니다...
Forums:
64 bit 환경의 Visual Studio 2013
64 bit 환경의 Visual Studio 2013 에서 long의 크기는 32 bit 입니다.
참고: http://msdn.microsoft.com/en-us/library/3b2e7499.aspx
구조체에서 그런 현상이 생기는 것은 구조체 패딩 때문입니다.
댓글 달기