C: malloc, calloc, realloc, free

Ju_Nik_e·2023년 5월 8일
0

C

목록 보기
1/1
post-thumbnail

malloc()

  • 동적으로 메모리를 할당하는 함수
    • 정적 메모리 : 프로그램 컴파일 시 할당되며, 실행 중에 크기가 변경될 수 없음
    • 동적 메모리 : 실행 중에 크기 변경 가능, 프로그램이 필요로 하지 않을 때는 메모리를 해제함

사용 예시

int* ptr;
ptr = (int*) malloc(10 * sizeof(int));
  • 크기가 10 * sizeof(int)바이트인 메모리를 할동하고, 할당된 메모리의 시작 주소를 ptr 포인터에 반환함.

calloc()

  • malloc()과 비슷하지만 할당한 메모리를 모두 0으로 초기화하는 동적 메모리 할당 함수
  • 2개의 인자를 받음. 첫 번째 인자는 할당할 요소의 개수, 두 번째 인자는 할당할 요소 하나의 크기
  • 초기화하는 시간이 필요하기때문에 malloc보다 느릴 수 잇음

사용 예시

int* ptr;
ptr = (int*) calloc(n, sizeof(int));
  • 크기가 n * sizeof바이트인 메모리를 할당하고, 할당된 메모리를 모두 0으로 초기화함

realloc()

  • 동적으로 할당된 메모리의 크기를 변경할 때 사용하는 함수
  • 두 개의 인자를 받으며, 첫 번째 인자는 기존에 할당된 메모리의 포인터, 두번 째 인자는 새로운 메모리의 크기
  • 반환값으로 새로운 메모리의 시작 주소를 반환(기존의 메모리 주소와 다를 수 있음)

사용 예시

int* ptr;
ptr = (int*) malloc(10 * sizeof(int)); // 크기가 10인 int형 배열 동적 할당

// 기존 메모리의 내용을 새로운 메모리로 복사하며 크기를 20으로 늘림
ptr = (int*) realloc(ptr, 20 * sizeof(int)); 
  • 새로운 크기의 메모리를 먼저 할당하고, 이전 내용을 새로운 메모리의 복사 후 이전 메모리를 해제함

free()

  • 동적으로 할당된 메모리를 해제하는 함수
  • malloc, calloc, realloc의 함수로 할당한 동적 메모리는 프로그램 종료 전 반드시 해제해줘야 함.
  • 포인터를 인자로 받아 해당 포인터가 가리키는 메모리를 해제함(동적 메모리를 가르키는 포인터여야만 함)

사용 예시

int* ptr;
ptr = (int*) malloc(10 * sizeof(int)); // 크기가 10인 int형 배열 동적 할당

// 할당된 메모리 사용...

free(ptr); // 할당된 메모리 해제

0개의 댓글

관련 채용 정보