ft_calloc

jaehlee·2025년 4월 25일

Libft

목록 보기
8/26

1. ft_calloc이란?


size크기의 변수를 num개 만큼 저장할 수 있는 메모리 공간을 할당해주는 함수이다. 할당된 메모리 내용을 0으로 초기화 해준다.

2. 함수 프로토타입

void	*ft_calloc(size_t num, size_t size)

3. 함수구현

#include "libft.h"

void	*ft_calloc(size_t num, size_t size)
{
	void	*ptr;

	if (size != 0 && num > ((size_t)-1) / size)
		return (0);
	ptr = malloc(num * size);
	if (!ptr)
		return (0);
	ft_bzero(ptr, num * size);
	return (ptr);
}

((size_t) - 1)는 size_t가 표현할 수 있는 최댓값이다.
num * size > ((size_t) - 1)로 쓰지않는 이유는 size와 num을 곱해서 오버플로우가 터지면 오류가 생기기 때문이다. 그래서 곱셈을 쓰지않고 비교를 하기위해 num > ((size_t)-1) / size이 방식으로 오버플로우를 방지하는 것이다.

사용예시

int main(void)
{
	int *arr;
	int i;

	arr = (int *)ft_calloc(5, sizeof(int)); // int형 5개를 저장할 공간 할당 및 0으로 초기화
	if (!arr)
		return (1); // 메모리 할당 실패

	for (i = 0; i < 5; i++)
		printf("%d ", arr[i]); // 0 0 0 0 0 출력

	free(arr);
	return (0);
}
profile
공부하는 개발자

0개의 댓글