Page 50 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 50

13      free(x);    /* int형 포인터에 할당한 메모리 해제 */
                     14    }
                     15
                     16    return 0;
                     17  }



                   포인터에 할당한 메모리의 생성부터 해제까지의 흐름을 그림 2-5에 나타냈습니다. 호출한

                   calloc 함수는 지정된(1 * sizeof(int) 바이트) 크기의 메모리를 힙 영역에 할당하고, 할당한 메모
                   리의 첫 번째 주소를 반환합니다. 할당한 메모리가 필요 없어지면 포인터를 free 함수에 전달
                   해 메모리를 해제합니다.


                           a                     b                            c

                                         생성                            해제
                                x                     x                           x

                   생성한 메모리를
                   가리키는 포인터                         확보한 영역        *x



                                int *x;             x = calloc(1, sizeof(int));    free(x);


                                             [그림 2-5] 객체의 동적 생성과 해제

                   보통 포인터 p가 가리키는 메모리 주소의 값은 간접 연산자 *를 사용한 식 *p를 사용하여 접

                   근할 수 있습니다. 포인터 x가 확보한 메모리 영역을 가리키고 있으므로 확보한 메모리 영역
                   은 *x로 접근할 수 있습니다. 위 프로그램은 *x에 57을 대입하고 그 값을 꺼내 출력합니다. 그
                   런 다음 free 함수로 할당한 메모리를 해제합니다.




                   배열의 동적 생성
                   앞 프로그램에서는 단일 객체를 생성했습니다. 이번에는 배열 객체를 동적으로 생성해 보겠습

                   니다. 실습 2-4는 자료형이 int형인 배열을 동적으로 생성하는 프로그램입니다. 먼저 앞에서
                   malloc 함수를 사용한 프로그램과 이번에 연습할 프로그램에서 calloc 함수의 호출을 비교해
                   보겠습니다(표 2-1).









                   50   C 알고리즘
   45   46   47   48   49   50   51   52   53   54   55