Basic C Language / 메모리 할당 malloc, calloc, realloc

Geewon Kim·2024년 1월 14일

Clang

목록 보기
6/13

메모리 할당은 프로그램이 실행 중에 필요한 데이터를 저장하기 위해 시스템 메모리에서 일정한 크기의 공간을 동적으로 확보하는 과정입니다. C 언어에서는 주로 세 가지 함수를 사용하여 메모리를 할당하고 해제합니다: malloc, calloc, realloc.

1. malloc 함수

#include <stdlib.h>

void *malloc(size_t size);
  • 설명:
    • malloc 함수는 메모리를 할당하고 할당된 메모리의 시작 주소를 반환합니다.
    • 인자로 전달된 size는 할당하려는 메모리의 크기를 나타냅니다.
    • 할당된 메모리는 초기화되지 않으며, 이후 사용하기 전에 초기화해야 합니다.
int *ptr = (int *)malloc(10 * sizeof(int)); // int형 변수 10개 크기의 메모리 할당

2. 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개 크기의 메모리 할당 및 초기화

3. 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 함수를 호출해야 합니다.

profile
내 지식의 외장하드

0개의 댓글