런타임 중에 필요한 메모리를 동적으로 할당하는 과정을 말한다. 프로그램 실행 전에 메모리가 미리 할당되는 정적 할당과 대조되는 방식이다. 런타임때 메모리 크기 조절, 생성 및 소멸 등 프로그래머가 자유롭게 메모리를 다룰 수 있기에 다양한 이점이 생긴다.
malloc 지정된 크기의 메모리 블록을 할당한다. 할당된 메모리는 초기화되지 않는다.
int* ptr = (int*)malloc(sizeof(int));
calloc 지정된 크기의 메모리 블록을 할당하고, 할당된 메모리를 모두 0으로 초기화한다.
int* ptr = (int*)calloc(5, sizeof(int));
free 동적으로 할당된 메모리를 해제한다.
free(ptr);
realloc 이미 할당된 메모리의 크기를 변경한다. 기존 메모리의 내용은 보존되며, 필요한 경우 다른 메모리 공간으로 이동될 수 있다.
ptr = (int*)realloc(ptr, 10 * sizeof(int));