[c언어] malloc 함수와 calloc 함수의 차이점

C언어에서 메모리 동적 할당을 위해 malloc 함수와 calloc 함수를 사용할 수 있습니다. 이 두 함수는 메모리를 동적으로 할당하는 데 사용되지만, 몇 가지 차이점이 있습니다.

malloc 함수

malloc 함수는 메모리를 할당할 때 초기화하지 않습니다. 할당된 메모리는 이전에 사용하던 데이터나 쓰레기 값으로 채워져 있을 수 있습니다. 만약 초기화된 값을 원한다면, 개별적으로 값을 초기화해야 합니다.

int *ptr = (int*) malloc(5 * sizeof(int));
if (ptr == NULL) {
    // 메모리 할당 실패
}
for (int i = 0; i < 5; i++) {
    ptr[i] = 0; // 초기화
}

calloc 함수

calloc 함수는 메모리를 할당하면서 모든 비트를 0으로 설정합니다. 따라서 초기화를 수행할 필요가 없습니다.

int *ptr = (int*) calloc(5, sizeof(int));
if (ptr == NULL) {
    // 메모리 할당 실패
}
// 초기화 작업이 필요하지 않음

결론

이상으로 malloc 함수와 calloc 함수의 차이점에 대해 알아보았습니다. 감사합니다.

참고 문헌

  1. ISO/IEC 9899:201x, Information technology – Programming languages – C, International Organization for Standardization, 201x.