[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
함수는 초기화가 자동으로 이루어집니다.- 따라서 초기화가 필요한지 여부에 따라 두 함수를 사용하면 됩니다.
이상으로 malloc
함수와 calloc
함수의 차이점에 대해 알아보았습니다. 감사합니다.
참고 문헌
- ISO/IEC 9899:201x, Information technology – Programming languages – C, International Organization for Standardization, 201x.