[C/libc] 메모리 초기화 함수 memset과 bzero 설명 및 구현

zae·2022년 8월 28일
0
post-thumbnail

🚩 memset

🦝 prototype

void	*memset(void *dest, int ch, size_t count)

🦝 함수 기능
메모리 dest를 count만큼 ch로 초기화한다

🦝 반환 값
메모리 dest의 주소를 반환

🦝 주의 사항

  • ch에 1을 넣으면 값이 요상하게 나온다 :: memset 함수는 값을 1바이트로 받기 때문에 1을 00000001 00000001 00000001 00000001으로 저장하게 되어 결국 10진수로 변환했을 때 원치 않는 값이 나오게 된다.

🦝 구현

void	*memset(void *dest, int ch, size_t count)
{
	char	*ptr;
	size_t	i;

	ptr = (char *)dest;
	i = 0;
	while (i < count)
	{
		((char *)dest)[i] = (char)ch;
		i++;
	}
	return (ptr);
}
  • size_tunistd.h 혹은 stdlib.h에 정의되어 있다.

🚩 bzero

🦝 prototype

void	bzero(void *s, size_t n)

🦝 함수 기능
메모리 s를 n만큼 0으로 초기화한다

🦝 반환 값
x

🦝 구현

void	bzero(void *s, size_t n)
{
	ft_memset(s, 0, n);
}
  • 현재 표준 C 라이브러리에 있지 않으며, bzero의 대안으로 memset이 생긴 것이다.
profile
코린이 성장 과정! 깊이 있게 파고들 공부를 탐색하고 있습니다 :)

0개의 댓글