char sizeof 이상하게 출력되는데.. 뭐죠?
글쓴이: wonjnlee / 작성시간: 수, 2016/12/28 - 12:52오후
#include
#include
#include
void main()
{
char* c1;
c1 = (char*)calloc(10, sizeof(char));
printf("c1 size : %lu\n", sizeof(c1));
printf("c1 strlen : %lu\n", strlen(c1));
}
이렇게 하면
c1 size : 8
c1 strlen : 0
이렇게 나오네요.. 전 c1 size : 10 이 나올거라 생각했는데..
이유가 뭘까요?ㅠ
Forums:
lu 말고 %d로 찍어도 같습니다.
lu 말고 %d로 찍어도 같습니다.
lu 말고 %d로 찍어도 같습니다.
lu 말고 %d로 찍어도 같습니다.
아래 페이지를 읽어 보시면 이해하실 것 같습니다.
아래 페이지를 읽어 보시면 이해하실 것 같습니다.
http://en.cppreference.com/w/cpp/language/sizeof
64비트 머신이군요!
64비트 머신이군요!
2
2
아주 간단합니다.
char* c1
이기 때문이죠.그래서
sizeof(c1) == sizeof(char *) /* == char * 포인터 크기 */
가 되는 겁니다.sizeof
는 컴파일 타임에서 오직 대상의 타입만을 보고 크기를 알려줍니다.런타임에 포인터가 스택을 가리키는지, 힙을 가리키는지, 가리키는 대상의 크기는 얼마인지는 전혀 모릅니다.
사실 C언어에서는 그런 정보를 어떤 방법으로도 전혀 제공하지 않으니 프로그래머가 따로 기록하는 수밖에 없어요.
댓글 달기