사진 출처: Out4Mind
C언어에는 메모리 할당 및 해제에 대한 4가지 함수가 stdlib.h 라이브러리에서 제공되고 있다.
malloc, calloc, free, 그리고 realloc 함수이다.
이 4가지 함수들 중
realloc 함수의 동작 원리에 대해서 자세히 살펴보고자 한다.
realloc 함수의 프로토타입은 다음과 같다.
void * realloc(void * ptr, size_t size);
realloc 함수는 포인터에 할당된 메모리의 크기를 늘리거나 줄이는 일이 필요할 때 사용하는 함수이다. realloc함수는 호출 시 두 개의 인자를 취하며, 재할당된 영역의 포인터를 반호나한다. 첫 번째 인자는 기존 할당된 메모리에 대한 포인터이며, 두 번째 인자는 요청할 메모리의 크기다. 재할당된 메모리의 크기는 기존 메모리의 크기와 다르며 반환 값은 재할당된 메모리의 포인터다.
두 개의 인자가 변함에 따라 realloc은 어떻게 작동할까? 아래의 표를 참고하면 한 눈에 이해할 수 있을 것이다.
첫 번째 매개변수 |
두 번째 매개변수 |
동작 |
null |
임의의 size |
malloc 함수와 동일하다. |
null 아님 |
0 |
*** 기존 메모리를 해제한다. |
null 아님 |
기존 메모리 크기보다 작은 size |
현재 메모리 영역을 사용하여 작은 메모리 영역을 할당한다. |
null 아님 |
기존 메모리 크기보다 큰 size |
현재 메모리 영역을 사용하거나, 다른 메모리 영역을 사용하여 보다 더 큰 메모리 영역을 할당한다. |
'컴퓨터 프로그래밍' 카테고리의 다른 글
예외상황에서의 포인터의 동작 (0) | 2014.02.14 |
---|---|
댕글링 포인터(Dangling Pointer) (8) | 2014.02.12 |
Xcode로 Hello World 출력해보기 [Objective-C] (0) | 2013.12.18 |
Door Lock 구현 동영상 (HBE-MCU-All in One) (0) | 2013.12.02 |
리눅스 우분투 운영체제의 헤더파일 위치/기본 경로 (0) | 2013.11.07 |