메모리 할당은 프로그램이 실행 중에 필요한 데이터를 저장하기 위해 시스템 메모리에서 일정한 크기의 공간을 동적으로 확보하는 과정입니다. C 언어에서는 주로 세 가지 함수를 사용하여 메모리를 할당하고 해제합니다: malloc, calloc, realloc.
malloc 함수#include <stdlib.h>
void *malloc(size_t size);
malloc 함수는 메모리를 할당하고 할당된 메모리의 시작 주소를 반환합니다.size는 할당하려는 메모리의 크기를 나타냅니다.int *ptr = (int *)malloc(10 * sizeof(int)); // int형 변수 10개 크기의 메모리 할당
calloc 함수#include <stdlib.h>
void *calloc(size_t num, size_t size);
calloc 함수는 메모리를 할당하고 할당된 메모리를 0으로 초기화한 후, 시작 주소를 반환합니다.num은 할당할 요소의 개수이고, 두 번째 인자 size는 각 요소의 크기입니다.int *ptr = (int *)calloc(10, sizeof(int)); // int형 변수 10개 크기의 메모리 할당 및 초기화
realloc 함수#include <stdlib.h>
void *realloc(void *ptr, size_t size);
realloc 함수는 이미 할당된 메모리의 크기를 변경하고, 새로운 크기의 메모리를 확보한 후 이전 데이터를 복사합니다.ptr은 이전에 할당된 메모리 블록의 포인터입니다.NULL을 반환하며, 이전 메모리는 그대로 유지됩니다.int *ptr = (int *)malloc(5 * sizeof(int)); // int형 변수 5개 크기의 메모리 할당
ptr = (int *)realloc(ptr, 10 * sizeof(int)); // 메모리 크기 조정
free 함수)#include <stdlib.h>
void free(void *ptr);
free 함수는 동적으로 할당된 메모리를 해제합니다.free 함수를 호출하여 메모리를 반환해야 합니다.int *ptr = (int *)malloc(10 * sizeof(int)); // int형 변수 10개 크기의 메모리 할당
free(ptr); // 할당된 메모리 해제
메모리 할당과 해제는 프로그램의 성능과 안정성에 중요한 영향을 미치므로, 신중하게 다뤄져야 합니다. 특히 동적으로 할당된 메모리는 반드시 해제되어야 하며, 메모리 누수를 방지하기 위해 할당된 메모리를 사용한 후 적절하게 free 함수를 호출해야 합니다.