Libft(1) - memset

2021. 5. 22. 16:1142seoul/42 Cursus

Libft(1) - memset

MEMSET(3)                BSD Library Functions Manual                MEMSET(3)

NAME
     memset -- fill a byte string with a byte value

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <string.h>

     void *
     memset(void *b, int c, size_t len);

DESCRIPTION
     The memset() function writes len bytes of value c (converted to an
     unsigned char) to the string b.

RETURN VALUES
     The memset() function returns its first argument.

SEE ALSO
     bzero(3), memset_pattern(3), memset_s.3, swab(3), wmemset(3)

STANDARDS
     The memset() function conforms to ISO/IEC 9899:1990 (``ISO C90'').

BSD                              June 4, 1993                              BSD

 

  • 바이트 값으로 바이트 스트링을 채움.
  • malloc()이나 calloc()에서 할당 받은 메모리를 특정 값으로 초기화하는 함수.
  • 보통 작업 전 NULL로 초기화할 때 많이 사용.

 

기본 함수 구조 및 매개변수

     #include <string.h>

     void *
     memset(void *b, int c, size_t len);

  • b : 채우고자 하는 메모리의 시작 포인터(시작 주소)
  • c : 메모리에 채우고자 하는 값. int 형인데 내부에서 unsigned char(1 byte)로 변환되어 저장.
  • len : 채우고자 하는 바이트 수. (메모리 크기)

 

  • c 값을 len 바이트 길이 만큼 b 문자열에 쓰는 함수.
  • c가 len만큼 쓰여진 문자열 b를 리턴.

 

사용 이유

  • 특정 범위에 있는 연속된 메모리에 값을 지정하고 싶을 때 사용. (for 문보다 더 빠른 속도 가능(컴파일러, 컴퓨터 아키텍처 따라 다름)

 

size_t 형은 뭘까?

사실상 unsigned int 로, 문자열이나 메모리의 사이즈를 나타낼 때 사용.

https://hashcode.co.kr/questions/754/size_t%EB%8A%94-%EC%A0%95%ED%99%95%ED%9E%88-%EC%96%B4%EB%96%A4-%ED%83%80%EC%9E%85%EC%9D%B8%EA%B0%80%EC%9A%94

 

size_t는 정확히 어떤 타입인가요?

sizeof()가 return한다는 건 알고 있는데 그 외에는 뭐가 더 있나요? 데이터 타입이긴 한가요?for(i = 0; i < some_size; i++) 이런 반복문을 쓸 때 i는 int? size_t? 둘 중 뭘 써야 하죠?

hashcode.co.kr

size_t와 unsigned int 와의 차이는?

unsigned int 또는 int는 64비트 os라고 해서 꼭 64비트 정수가 아니라 32비트일 가능성이 존재함. 

하지만 size_t는 32비트 운영체제에서는 부호없는 32비트 정수이고, 64비트 운영체제에서는 부호없는 64비트 정수!

http://mwultong.blogspot.com/2007/06/c-sizet-unsigned-int.html

 

C언어] size_t 형의 의미; unsigned int와 차이점, 차이

size_t 는 unsigned int 이며, 문자열이나 메모리의 사이즈를 나타낼 때 사용합니다. "unsigned int"를 typedef unsigned int size_t; 이렇게 size_t 라는 이름으로 정의해 놓은 것입니다. size_t 는, 32비트 운영체제에

mwultong.blogspot.com

 

참고 자료

https://twpower.github.io/79-usage-of-memset-function

 

[C, C++] memset 함수 사용하기

Practice makes perfect!

twpower.github.io

 

'42seoul > 42 Cursus' 카테고리의 다른 글

Libft(6) - memchr  (0) 2021.06.26
Libft(5) - memmove  (0) 2021.06.26
Libft(4) - memccpy  (0) 2021.05.22
Libft(3) - memcpy  (0) 2021.05.22
Libft(2) - bzero  (0) 2021.05.22