1 분 소요

#include
#ifdef ____what____

동적 메모리 할당 malloc사용하여 잡는 방법이다.
음.. 왜 malloc를 사용해야 하는것일까? 그것에 대한 고찰을 해볼까 한다.

동적 메모리 할당을 하는 이유는 처음부터 메모리를 잡게 되면 메모리의 낭비를 초래할수있다.
그리고 말도안되는 방법 ==» 프로그램 중간에 scanf로 배열크기를 입력받아서
그것으로 배열을 선언해도 되지 않냐는 생각을 하는 사람이 있다면….
나랑 같은 생각을 하셨소.. 우린 바보인가 보오.. 하하. 초보의 비애 ㅜㅜ
하이튼 그렇게 하면안된다.. 그래서 중간에 메모리를 잡았다가 지웠다 하는
방법은 동적 메모리 할당에 있다고 한다. 필요할때만 꺼내쓰고..
필요없으면 잠시 쳐박아 둘수 있는 쎈스.. 이것도 중요한 기술중에 하나가 아닐까 한다.

프로그램은 쎈스다.. 그리고 포인터는 그릇이다…
결국 프로그램은 그릇들을 얼마니 이쁘게 쓰는지에 대한 쎈스이다. 하하..
-by 설악.

FIRST : 함 프로그램 중간에 배열을 잡아 보자구.. 되나 안되나…
==» 미친 된다.. 음.. 모가 문제일까.. 쩝. 되면안되는데 ㅜㅜ

SECOND : 동적할당 표준 방법을 따라서 해보자 그리구 이것저것 실험.. ^^;

#endif

#define FIRST

int main(int argc, char *argv[])
{
#ifdef FIRST // 왜 되는것일까? 음.. 고민 고민.. 흑흑..
int Num;
int i=0;
printf(“배열 크기 입력해 봐봐. “);

scanf(“%d”,&Num);

int test_address[Num];

for (i;i{
test_address[i]=i;
}
for (i=0;i{
printf(“test_address[%d]= %d
“, i, test_address[i]);
}
printf(“sizeof test_address[] = %d”,sizeof(test_address));

#endif //FIRST

#ifdef SECOND

int *test_amp;

test_amp = (int *)malloc(10*sizeof(int));

printf(“size of * test_amp is %d
“, sizeof(test_amp));

int i=0;
for (i;i<11 ;i++ )
{
test_amp[i] = i;
}

for (i=0;i<11 ;i++ )
{
printf(“test_amp[%d] = %d
“, i, test_amp[i]);
}

free(test_amp);
// 우선 free를 해도 데이터는 저장되어있다. 음.. 허기야
// free를 해줘도 상관없을것 같기는 하다.. 하하..
for (i=0;i<11 ;i++ )
{
printf(“test_amp[%d] = %d
“, i, test_amp[i]);
}

#endif //SECOND
return 0;
}\