[C언어] 동적 할당(malloc, calloc, realloc)

2024. 10. 8. 20:55·언어/C
목차
  1. 🖐️[C언어] 동적 할당(malloc, calloc, realloc)
  2. ☑️ malloc
  3. ☑️ calloc
  4. ☑️ realloc

참고 자료

  • MS Learn
    • malloc : https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/malloc?view=msvc-170
    • calloc : https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/calloc?view=msvc-170
    • realloc : https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/realloc?view=msvc-170

🖐️[C언어] 동적 할당(malloc, calloc, realloc)

동적 할당에 대해서는 아래의 게시글 참고

 

[자료구조] 동적 메모리 할당

☑️ 동적 메모리 할당동적 메모리 할당은 C언어에만 한정된 개념이 아니라, 다양한 프로그래밍 언어에서도 사용되고 있는 개념이다. 동적 메모리 할당의 내용과 사용 방법 자체는 어렵지 않다.

taeyeokim.tistory.com

 

☑️ malloc

// 함수 원형
void *malloc(
    size_t size
);

// 사용 방법
int* arr = (int*)malloc(5 * sizeof(int));

 

size만큼의 값을 할당한다. 메모리 상에 공간이 없을 경우, NULL을 반환하고 할당이 정상적으로 이루어졌을 경우, 할당된 공간의 포인터를 반환한다.

 

☑️ calloc

// 함수 원형
void* calloc(
    size_t number,
    size_t size
);

// 사용 방법
int* arr = (int*)calloc(5, sizeof(int));

 

malloc 함수와 동일하게 이루어진다. 단, 전달 인자는 2개로 할당할 공간의 개수와 할당 기준 값을 추가하면 된다. 이때, size나 number에 0을 전달하면 Unique Pointer를 전달하는데, 이 값에 Read/Write를 시도할 경우 정해지지 않은 동작(예상치 못한 동작들)이 나타난다.

 

malloc 함수와 다른 차이점은 calloc 함수는 할당되는 공간을 0으로 초기화한다는 것이다. 이로인해서 malloc 함수나 realloc 함수에 비해서는 속도가 느리다.

 

☑️ realloc

// 함수 원형
void* realloc(
    void* memblock,
    size_t size
);

// 사용 방법
int* arr = (int*)realloc(arr, 7 * sizeof(int));

 

내부적으로는 malloc 함수와 같은 원리로 메모리를 할당한다. realloc 함수는 이미 동적 할당된 변수들의 공간을 추가적으로 최대한 연속적이게 할당시킴으로서 메모리 단편화를 최대한 줄인다. 만약 메모리 공간에 할당 할 수 없으면 NULL 값을 반환한다.

'언어 > C' 카테고리의 다른 글

[C언어] 포인터(Pointer)  (0) 2024.10.07
  1. 🖐️[C언어] 동적 할당(malloc, calloc, realloc)
  2. ☑️ malloc
  3. ☑️ calloc
  4. ☑️ realloc
'언어/C' 카테고리의 다른 글
  • [C언어] 포인터(Pointer)
태역
태역
  • 태역
    RYULAB
    태역
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 언어
        • C
        • C++
        • C#
      • 엔진, 프레임워크
        • Unity
        • Unreal
        • Electron
      • 공부
        • 디자인 패턴
        • 수학
        • CS
        • Git
        • 알고리즘
        • 자료구조
      • 코테
        • 프로그래머스
        • 백준
      • 독서
        • Effective C#
        • CLR via C#
        • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
        • 오브젝트
        • CSAPP
        • OSTEP
      • 프로젝트
        • Unity
      • 개발 일지
        • 퓨처리티
        • 골든타임
      • 활동
        • 게임잼 후기
        • 게임제작동아리 브릿지
        • 크래프톤 정글
        • 기타
      • 기타
  • 블로그 메뉴

    • 링크

    • 공지사항

      • 2024 04 17
    • 인기 글

    • 태그

      인프런 #인프런강의후기 #게임개발 #게임개발강의 #인강후기 #강의후기 #게임개발자 #인프런강의
      티스토리챌린지
      오블완
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    태역
    [C언어] 동적 할당(malloc, calloc, realloc)
    상단으로

    티스토리툴바

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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