DevOps:leehi9817

동적 메모리 할당 (Dynamic Memory Management) 본문

Computer Science/Data Structure

동적 메모리 할당 (Dynamic Memory Management)

leehi9817 2020. 1. 2. 16:53

동적 메모리 할당 (Dynamic Memory Management)

프로그램이 사용하는 메모리 공간은 명령어 코드, 변수들을 위한 정적 메모리 공간과 실행 중에 사용되는 동적 메모리 공간으로 이루어진다. 동적 메모리 공간은 힙 메모리 (Heap Memory) 라고도 부른다. 힙 메모리를 사용하기 위해서는 사용자가 직접 메모리 할당을 요청하거나 할당 공간을 해제해야 하며 이러한 작업을 동적 메모리 관리 (Dynamic Memory Allocation : DMA) 라고 한다. 동적 메모리 관리를 위해서는 malloc과 free 전용 함수를 사용한다. 

malloc 함수는 바이트 단위로 요청된 힙 메모리 공간을 할당해 주고 그 주소를 반환한다. 할당된 공간은 이 공간의 주소를 가지고 있는 포인터를 통해서 참조할 수 있다. 할당된 공간이 더 이상 필요 없는 때에는 이 공간의 포인터를 free 함수에 전달하여 해제한다.

 

전용 함수 기능 사용 예
malloc( ) 요청된 크기의 힙 메모리 공간을 할당하고 그 시작 주소를 반환한다. ptr = (int *) malloc (sizeof(int));
free( ) 기존에 할당된 공간을 해제하여 힙 메모리에 반환한다. free(ptr);

 

malloc 함수를 통해 공간을 요청하는 명령문

공간 할당이 성공할 경우 메모리 주소가 반환되는데 형 변환 (Type Casting) 을 통하여 동일한 자료형의 포인터에 저장한다.

ex) ptr = ( int * ) malloc ( sizeof ( int ) );

 

할당된 공간을 해제하는 명령문

할당된 공간을 해제할 때는 대상 공간에 대한 포인터를 free 함수의 인자로 전달하고 형 변환없이 호출한다.

ex) free ( ptr );

Comments