sizeof()는 type의 크기나 문자열의 길이를 알아 낼때 쓰이는 유용한 녀석이다
근데 문제는 생긴 꼴은 function() 이라서 대충 보면 함수 같은데
엄밀하게 이녀석은 operator이다.(연산자)
그런 이유로, sizeof()는 runtime시에 값이 치환되는것이 아닌 compile time에 값이 치환된다.
처럼 runtime시에 할당되는 크기는 알 수가 없다.
위의 것은 12바이트 문자열이므로(11 + 1byte NULL) 12가 나왔지만
아래는 *char 즉, 포인터 형으로 4byte가 나온것이다.
[링크 : http://www.velocityreviews.com/forums/t635338-sizeof-calculated-at-compile-time-or-run-time.html
근데 문제는 생긴 꼴은 function() 이라서 대충 보면 함수 같은데
엄밀하게 이녀석은 operator이다.(연산자)
그런 이유로, sizeof()는 runtime시에 값이 치환되는것이 아닌 compile time에 값이 치환된다.
#include "stdio.h" #include "stdlib.h" #include "string.h" void main() { char str[] = "Hello World"; char *str2 = NULL; printf("sizeof(char) %d\n",sizeof(char)); printf("sizeof(short) %d\n",sizeof(short)); printf("sizeof(int) %d\n",sizeof(int)); printf("sizeof(str) %d\n",sizeof(str)); printf("sizeof(*str) %d\n",sizeof(*str)); str2 = (char*)malloc(12); printf("sizeof(str2) %d\n",sizeof(str2)); printf("sizeof(*str2) %d\n",sizeof(*str2)); free(str2); }
sizeof(char) 1 sizeof(short) 2 sizeof(int) 4 sizeof(str) 12 sizeof(*str) 1 sizeof(str2) 4 sizeof(*str2) 1 |
처럼 runtime시에 할당되는 크기는 알 수가 없다.
위의 것은 12바이트 문자열이므로(11 + 1byte NULL) 12가 나왔지만
아래는 *char 즉, 포인터 형으로 4byte가 나온것이다.
[링크 : http://www.velocityreviews.com/forums/t635338-sizeof-calculated-at-compile-time-or-run-time.html
'Programming > C Win32 MFC' 카테고리의 다른 글
전처리기를 이용한 디버깅용 선언문(#define) (0) | 2009.05.15 |
---|---|
기술직 공무원 시험문제 - for / while / goto / 연산자 우선순위 (0) | 2009.04.29 |
int main(int argc, char *argv[]) 에 대한 짧은 이야기 (3) | 2009.03.24 |
c언어에는 cp() 가 없다? (0) | 2009.03.16 |
The C Library Reference Guide (0) | 2009.02.24 |