TIL 12 | 메모리의 동적 할당 - calloc함수, realloc함수
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으로 초기화.
Author And Source
이 문제에 관하여(TIL 12 | 메모리의 동적 할당 - calloc함수, realloc함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yoonsik123/TIL-12-메모리의-동적-할당-calloc함수-realloc함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)