malloc 함수란 무엇인가?
C 언어에서 malloc() 함수는 'memory allocation(메모리 할당)'의 약자로, 프로그램 실행 중에 힙(heap) 영역에 필요한 크기의 메모리 블록을 동적으로 할당하는 표준 라이브러리 함수입니다.
이 함수는 지정된 크기만큼의 메모리 공간을 예약하고, 그 메모리의 시작 주소를 가리키는 포인터를 반환합니다. 요청한 메모리 할당에 실패하면 NULL을 반환하므로, 반환값을 반드시 확인해야 합니다.
또한 malloc()이 할당한 메모리는 초기화되지 않은 상태이므로 쓰레기 값(garbage value)이 들어 있으며, 반환되는 포인터의 자료형은 void*입니다. 따라서 실제 사용 시에는 원하는 자료형으로 형 변환(casting)하여 사용하는 것이 일반적입니다.
malloc 함수의 문법
malloc() 함수의 기본 문법은 다음과 같습니다.
ptr = (castType*) malloc(size);
- ptr : 할당된 메모리의 주소를 저장할 포인터 변수
- castType : 원하는 자료형 (예: int*, char*)
- size : 할당받고자 하는 메모리의 바이트 단위 크기
malloc 함수 사용 예제
다음 예제는 malloc() 함수를 활용해 문자열 저장용 메모리를 동적으로 할당하는 방법을 보여줍니다.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char *MemoryAlloc;
/* 메모리를 동적으로 할당 */
MemoryAlloc = malloc( 15 * sizeof(char) );
if(MemoryAlloc== NULL ){
printf("요청한 메모리를 할당할 수 없습니다\n");
}else{
strcpy( MemoryAlloc,"TutorialsPoint");
}
printf("동적으로 할당된 메모리 내용 : %s\n", MemoryAlloc);
free(MemoryAlloc);
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
동적으로 할당된 메모리 내용: TutorialsPoint
정리 및 참고 사항
malloc() 함수를 사용하려면 헤더 파일 <stdlib.h>를 포함해야 하며, 사용이 끝난 메모리는 반드시 free() 함수로 해제해야 메모리 누수(memory leak)를 방지할 수 있습니다. 위 예제에서도 마지막에 free(MemoryAlloc);를 호출하여 할당된 메모리를 반환하는 것을 확인할 수 있습니다.