[CS기초] 동적 메모리 할당과 관련 함수(malloc, calloc, realloc, free)

2025. 4. 14. 21:40·크래프톤 정글/CS기초(키워드, 개념정리)
목차
  1. 동적 메모리 할당과 관련 함수(malloc, calloc, realloc, free)
  2. 동적 메모리 할당 함수 malloc, calloc, realloc, free
  3. 사용 예시
  4. 주의 사항
  5. 동적 메모리할당 정리

동적 메모리 할당과 관련 함수(malloc, calloc, realloc, free)

프로그램 실행 중 필요한 만큼 메모리를 할당받는 방식을 동적 메모리 할당이라고 하는데요. 주로 Heap 영역에서 메모리를 할당하며, 크기가 정해지지 않은 배열이나 구조체 등을 유연하게 다룰 수 있게 해줍니다.

  • 정적 메모리 할당: 컴파일 시 크기 고정 (int arr[100])
  • 동적 메모리 할당: 실행 시 크기 결정 (malloc 등 사용)

 

동적 메모리 할당 함수 malloc, calloc, realloc, free

  • malloc(memory allocation): 초기화 없이 메모리를 할당하는 함수
  • calloc(clear allocation): 0으로 초기화된 메모리를 할당하는 함수
  • realloc(re-allocation): 할당된 메모리를 새 크기로 조정하는 함수
  • free: 할당된 메모리를 해제하는 함수
함수 설명 특징
malloc(size) 지정한 바이트 크기만큼 메모리 할당 초기화되지 않은 메모리
calloc(n, size) n개의 요소를 size만큼 할당 0으로 초기화됨
realloc(ptr, new_size) 기존 메모리 크기 조정 데이터 유지 가능
free(ptr) 할당된 메모리 해제 메모리 누수 방지(필수)

 

사용 예시

int *arr = malloc(5 * sizeof(int));        // int 5개 크기 할당 (초기화되지 않은 값 = 쓰레기 값)
int *zeroed = calloc(5, sizeof(int));      // int 5개 0으로 초기화된 메모리 할당

arr = realloc(arr, 10 * sizeof(int));      // 메모리 크기를 10개로 확장 (기존 값은 유지될 수도 있음)

// 메모리 해제
free(zeroed);                              // calloc으로 할당한 메모리 해제
free(arr);                                 // realloc된 메모리 해제

 

주의 사항

  • malloc / calloc 사용 후에는 반드시 free로 해제해야 함
  • 반환값은 NULL일 수 있으므로 할당 여부 확인 필수
  • realloc은 실패 시 NULL을 반환하므로 기존 포인터 유지가 안 될 수 있음
    • 이 경우, 임시 포인터를 통해 예외 처리하는 것이 안전
int *temp = realloc(ptr, new_size);
if (temp == NULL) {
    // 재할당 실패 처리
} else {
    ptr = temp;
}

 

 

동적 메모리할당 정리

동적 메모리 할당은 유연한 자료구조 구현에 핵심적인 기술입니다. 메모리 낭비를 줄이고, 프로그램의 크기나 데이터량이 가변적일 때 유용하게 쓰이죠. 다만 해제하지 않으면 메모리 누수가 발생하기 때문에 주의가 필요합니다.

저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글

[중간정리] 5주차 - B-Tree, C언어, 이진 탐색 트리, DP(Top-Down과 Bottom-Up)  (0) 2025.04.16
[CS기초] 5주차 개념 정리  (0) 2025.04.15
[CS기초] GCC(GNU Compiler Collection)  (0) 2025.04.14
[CS기초] 보이어-무어(Boyer-Moore) 문자열 탐색 알고리즘  (0) 2025.04.14
[CS기초] KMP(Knuth-Morris-Pratt) 알고리즘  (0) 2025.04.14
  1. 동적 메모리 할당과 관련 함수(malloc, calloc, realloc, free)
  2. 동적 메모리 할당 함수 malloc, calloc, realloc, free
  3. 사용 예시
  4. 주의 사항
  5. 동적 메모리할당 정리
'크래프톤 정글/CS기초(키워드, 개념정리)' 카테고리의 다른 글
  • [중간정리] 5주차 - B-Tree, C언어, 이진 탐색 트리, DP(Top-Down과 Bottom-Up)
  • [CS기초] 5주차 개념 정리
  • [CS기초] GCC(GNU Compiler Collection)
  • [CS기초] 보이어-무어(Boyer-Moore) 문자열 탐색 알고리즘
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리)
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어)
        • Equipped in 정글(나만무) N
        • 마이 정글(WIL, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CS기초] 동적 메모리 할당과 관련 함수(malloc, calloc, realloc, free)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.