동적 메모리 할당(dynamic memory allocation)은 프로그램 실행 중에, 즉 런타임에 메모리를 할당하는 과정을 말합니다. 이를 통해 프로그램은 필요한 만큼의 메모리를 요청하고, 사용이 끝나면 운영 체제에 반환할 수 있습니다. C언어와 같은 저수준 언어에서는 개발자가 직접 메모리를 관리해야 하므로, 동적 메모리 할당은 중요한 개념입니다.
malloc
: 지정된 크기의 메모리 블록을 할당합니다. 할당된 메모리는 초기화되지 않습니다.int *ptr = (int*)malloc(sizeof(int) * n); // n개의 정수 크기만큼 메모리 할당
calloc
: malloc
과 비슷하지만, 할당된 메모리를 0으로 초기화합니다.int *ptr = (int*)calloc(n, sizeof(int)); // n개의 정수를 저장할 수 있는 메모리 할당 및 0으로 초기화
realloc
: 이미 할당된 메모리 블록의 크기를 변경합니다.ptr = (int*)realloc(ptr, sizeof(int) * n); // ptr의 메모리 크기를 n개의 정수 크기만큼 조정
free
: 할당된 메모리를 해제하고 운영 체제에 반환합니다.free(ptr); // 할당한 메모리 해제
malloc
이나 calloc
함수는 메모리 할당에 실패하면 NULL
포인터를 반환합니다. 프로그램은 이를 적절히 처리해야 합니다.파이썬과 같은 높은 수준의 언어에서는 개발자가 직접 메모리를 할당하고 해제할 필요가 없습니다. 파이썬은 자동으로 메모리를 관리하는 가비지 컬렉터를 내장하고 있어, 개발자는 객체를 생성하고 사용하면 됩니다. 그러나 내부적으로는 파이썬도 필요에 따라 동적으로 메모리를 할당하고 해제하는 과정이 일어나고 있습니다.
free
를 호출하여 해제해야 합니다.