TIL 12 | 메모리의 동적 할당 - calloc함수, realloc함수

3050 단어 CC

calloc 함수

heap영역에 메모리를 할당하는 함수로, malloc 함수와 같은 기능을 한다.

calloc 함수의 기본형 -
void * calloc(size_t elt_count, size_t elt_size);
-> 성공 시 할당된 메모리의 주소값, 실패 시 NULL 반환
  • malloc 함수
int ptr1 = (int*) malloc(sizeof(int)*5);
->20byte를 heap영역에 할당해라
  • calloc 함수
int ptr2 = (int*)calloc(5, sizeof(int));
-> 4byte 크기의 메모리 5개를 heap영역에 할당해라(20byte)

위에서 볼 수 있듯이, calloc 함수와 malloc 함수의 차이점은 메모리 공간 할당을 위한 전달 방식에 있다.

  • malloc 함수 : 한번에 할당할 바이트의 크기를 한번에 전달

  • calloc 함수 : 첫 번째 전달인자로는 할당할 메모리 블록의 개수 전달. 두 번째 전달인자로는 블록 하나당 바이트의 크기 전달

그리고, 또 하나의 차이점이 있다. malloc 함수는 heap영역에 할당된 공간을 별도의 값으로 초기화 하지 않는다. 그렇기 때문에 할당된 메모리 공간은 쓰레기 값으로 채워진다.
하지만 calloc함수할당된 메모리 공간을 모두 0으로 초기화 한다. 그러므로, 배열을 할당하고, 모두 0으로 초기화할 필요가 있을 경우, calloc을 사용하면 편하다.

  • malloc 함수 : 할당된 메모리공간 별도의 값으로 초기화 X. 쓰레기 값으로 채워짐.

  • calloc 함수 : 할당된 메모리 공간을 모두 0으로 초기화.


좋은 웹페이지 즐겨찾기