본문 바로가기
C

memset (C 메모리 초기화 함수)

by yororing 2024. 8. 28.

00 개요

  • 메모리... C...C..

 

01 memset 함수

1. 정의 및 역할

  • = memory + setting = 메모리를 (특정 값으로) 세팅
  • 메모리의 내용(값)원하는 크기만큼 특정 값으로 설정하는 함수 

2. 문법

void* memset(void* ptr, int value, size_t num);
  • Parameters
    • void* ptr:
      • 세팅하고자 하는 메모리의 시작 주소
      • 즉, 그 주소를 가리키고 있는 포인터가 위치하는 자리
      • a pointer to the block of memory to fill
    • value:
      • 메모리에 세팅하고자 하는 값
      • int 타입으로 받지만 내부에서는 unsigned char 로 변환되어서 저장됨
      • 즉 'a' 이런것을 넣어도 무방
      • type integer
      • converts it to an unsigned char before using it to fill a block of memory
    • size_t num:
      • 길이
      • 바이트 단위, 메모리의 크기 한조각 단위의 길이
      • 보통 "길이 * sizeof(데이터타입)" 의 형태로 작성
      • number of bytes to be set to the value
  • Return
    • 성공: 첫번째 인자로 들어간 ptr
    • 실패: NULL
  • header file
    • memory.h 혹은 string.h 둘중 하나를 사용해도 무방
    • 두개다 memset 함수가 정의되어 있음

3. 예제

1) 문자 배열 변경

char arr[] = "blockdmask";
memset(arr, 'c', 5 * sizeof(char));
print(arr);
  • 첫번째 인자에는 변경하고자 하는 목적지의 첫번째 주소(포인터)
  • 두번째 인자에는 변경하고자 하는 값 'c'
  • 마지막 인자에는 변경하고자 하는 길이 5
  • char 배열이 들어왔으므로 char 타입의 바이트 크기를 계산해서 곱함 - 즉, 바이트 길이를 넣어준 것
  • 반환값: 
cccccdmask blog
  • 배열 "blockdmask blog"에서 앞자리 5자리가 'c' 값으로 초기화 된 것 확

참조

  1. https://blockdmask.tistory.com/441 
  2. https://www.tutorialspoint.com/c_standard_library/c_function_memset.htm
  3.  

'C' 카테고리의 다른 글

구조체의 필드에 접근 방법 (->, .)  (0) 2024.08.30
PyList_New(size 또는 0)  (0) 2024.08.30
struct 구조체 (C언어 데이터 타입)  (0) 2024.08.09
매크로 함수, 인라인 함수(#define, #inline)  (0) 2024.06.25
Macro (매크로)  (0) 2024.06.25