동적 메모리 할당 (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 );
'알고리즘' 카테고리의 다른 글
| 백준 1065번 - 한수(C++) (0) | 2020.10.12 |
|---|---|
| 백준 2309번 - 일곱 난쟁이(C++) (0) | 2020.10.12 |
| Instruction Sets: Addressing Modes and Formats (0) | 2020.05.28 |
| 연결 리스트 (Linked List) (0) | 2020.01.02 |
| 중위, 후위, 전위 수식 표기법 (Infix, Postfix, Prefix) (0) | 2020.01.01 |