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 알고리즘