소프트웨어/C 언어

[C언어]36.C 동적할당 malloc 말고 초기화와 함께 하는법 : calloc

리습 2021. 3. 16. 07:00


안녕하세요 리습입니다.

이전시간에는 C언어에서 동적할당을 하는 방법으로 malloc을 사용하는 방법을 소개해 드렸습니다.

이번 시간에는 calloc이라는 함수를 소개해 드리려고 합니다.

calloc : 손쉽게 초기화와 동적할당을 하는 법.

 calloc은 기본적으론 malloc과 동작이 같지만, 사용 방법이 조금 다릅니다. 또한 malloc은 메모리만 할당해준 뒤 초기화를 해주지 않지만 calloc은 0으로 초기화를 해준다는 차이점이 있습니다.

calloc의 형식은 다음과 같습니다.

void *calloc (size_t num, size_t size);

 malloc과 입력인자가 다른 부분은, malloc은 byte단위로 필요한 크기를 입력해야 했지만, calloc은 num으로 필요한 변수의 갯수, size로 변수의 크기를 입력해주면 됩니다. 

 자 그럼 실제로 사용 예시를 보도록 하겠습니다.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
	int *ptr = NULL;
	ptr = (int*)calloc(10, sizeof(int)); // 필요한 숫자 입력
	/* processing example*/
	for (int i = 0; i < 10; i++) {
		ptr[i] = i;
	}
	for (int i = 0; i < 10; i++) {
		printf("%d\n", ptr[i]);
	}
	/* procssing end */
	free(ptr);
	return 0;
}

 다음과 같이 필요한 변수의 갯수와 크기를 입력한뒤 그 값을 포인터로 입력받아 사용하시면 됩니다. 

마무리

calloc은 malloc과는 다르게 입력 인자들도 직관적이고 초기화가 되어있다는 장점이 있기 때문에 필요에 따라 매우 편리하게 사용하시면 좋습니다.  그럼 다음 시간엔 이전에 말씀 드렸던 재할당 방법에 대하여 알아보도록 하겠습니다.