2021. 5. 22. 16:11ㆍ42seoul/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 로, 문자열이나 메모리의 사이즈를 나타낼 때 사용.
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 |