malloc and realloc functions in C / C++ - Out4Mind

사진 출처: 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

 현재 메모리 영역을 사용하거나, 다른 메모리 영역을 사용하여

보다 더 큰 메모리 영역을 할당한다.


+ Recent posts