메모리 동적 할당 Dynamic Memory Allocation

Gogi·2023년 5월 25일

C언어 기초 목록

목록 보기
21/23

그때그때 필요한 만큼

런타임 중에 필요한 메모리를 동적으로 할당하는 과정을 말한다. 프로그램 실행 전에 메모리가 미리 할당되는 정적 할당과 대조되는 방식이다. 런타임때 메모리 크기 조절, 생성 및 소멸 등 프로그래머가 자유롭게 메모리를 다룰 수 있기에 다양한 이점이 생긴다.


개념 설명 및 사용 예시

1. 메모리 할당

malloc 지정된 크기의 메모리 블록을 할당한다. 할당된 메모리는 초기화되지 않는다.

int* ptr = (int*)malloc(sizeof(int));

calloc 지정된 크기의 메모리 블록을 할당하고, 할당된 메모리를 모두 0으로 초기화한다.

int* ptr = (int*)calloc(5, sizeof(int));

2. 메모리 해제

free 동적으로 할당된 메모리를 해제한다.

free(ptr);

3. 메모리 재할당

realloc 이미 할당된 메모리의 크기를 변경한다. 기존 메모리의 내용은 보존되며, 필요한 경우 다른 메모리 공간으로 이동될 수 있다.

ptr = (int*)realloc(ptr, 10 * sizeof(int));

주의사항

  • 동적 할당 후엔 반드시 해제할 것
  • 잦은 동적 할당 시 오버헤드가 발생할 수 있으므로 주의
  • 해제한 영역을 가리키고 있는 포인터가 있는지 확인
profile
C, C++, C#, Unity

0개의 댓글