YoonWould!!

[C++] memset 함수 본문

<프로그래밍>/C++

[C++] memset 함수

Hading 2022. 11. 18. 13:06
728x90

환경 및 선수조건

  • C, C++

 

목적

  • memset함수는 어떤 메모리의 시작점부터 연속된 범위를 어떤 값으로(바이트 단위) 모두 지정하고 싶을 때 사용하는 함수이다.

 

기본 함수 구조 및 매개변수

void * memset ( void * ptr, int value, size_t num ); 
  • ptr : 채우고자 하는 메모리의 시작 포인터(시작 주소)
  • value : 메모리에 채우고자하는 값. int형이지만 내부에서는 unsigned char(1 byte)로 변환되어서 저장된다.
  • num : 채우고자 하는 바이트의 수. 즉, 채우고자 하는 메모리의 크기

 

코드

  • 코드
#include <string.h> // string.h 파일이 필요합니다. #include <stdio.h>  int main (){      char a[20];      // 1바이트마다 모두 65로 초기화     // 배열을 채울 때는 sizeof()함수를 사용하면 됩니다.     // sizeof 함수 - 배열의 전체 바이트 크기를 반환합니다.     memset(a, 65, sizeof(a));      // 출력을 통해 확인     for(int i=0; i< (sizeof(a)/sizeof(char)); i++){         printf("%c\n",a[i]);     }  } 

 

memset 함수를 사용하는 이유

대체로 memset함수는 특정 범위에 있는 연속된 메모리에 값을 지정하고 싶을 때 사용하는데 for문보다 더 빠른 속도가 나올수가 있다.

여기서 나올수가 있다라고 표현한 이유는 컴파일러 그리고 컴퓨터 아키텍처에 따라서 다르기 때문이다.

자세한 내용은 아래 두 참고자료를 보면 Quora에는 어셈블리 코드로 비교한게 나와있고 Stack Overflow에는 관련한 내용들이 나와있다.

 

참고자료

 
 

 

728x90