C언어

[C언어] memset() 함수

_minit 2024. 10. 10. 07:58

memset() 함수는 C 프로그래밍 언어 메모리의 특정 영역을 원하는 값으로 초기화(세팅)할 때 사용되는 함수이다.

이 함수는 동적 메모리 할당이 아닌 정적 메모리 할당 또는 자동 메모리 할당이라고 부른다.

함수의 이름 보면 뜻을 알 수 있다. memory + setting 메모리를 특정 값으로 세팅한다.

 

사용법

#include <string.h>

void * memset(void* ptr, int value, size_t num);

 

매개변수

  • ptr : 초기화할 메모리의 시작 주소이다.
  • value : 메모리에 설정한 값이고, unsigned char로 변환되어 사용된다. 0~255 사이의 값을 넣으면 된다.
  • num : 초기화할 바이트 수이다. 메모리에서 몇 바이트를 이 값으로 채울지 지정한다.

반환값

  • 초기화된 메모리의 포인터를 반환한다.
  • malloc 함수처럼 실패하면 NULL이 아니냐 물어볼 수 있겠지만 이 함수는 실패할 경우가 없어서 무조건 ptr을 반환한다고 생각하면 된다.

 

예제1)

#include <stdio.h>
#include <string.h>

int main() {
    int arr[10];

    // 배열의 모든 바이트를 -1로 설정 (int는 4바이트이므로 각 int의 모든 바이트가 0xFF로 채워짐)
    memset(arr, -1, sizeof(arr));

    // 배열의 값을 출력
    for (int i = 0; i < 10; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }

    return 0;
}

 

설명

  1. arr[10] 배열을 선언하여 크기가 10인 정수 배열을 생성한다.
  2. memset(arr, -1, sizeof(arr)); 를 호출하여 배열의 모든 바이트를 -1로 채운다. 각 정수는 4바이트이므로, 배열의 각 요소는 0xFFFFFFFF로 설정되어 -1이 된다.
  3. for문을 사용해 각 배열의 각 값을 출력한다.

출력 결과

arr[0] = -1
arr[1] = -1
arr[2] = -1
arr[3] = -1
arr[4] = -1
arr[5] = -1
arr[6] = -1
arr[7] = -1
arr[8] = -1
arr[9] = -1

 

 

예제2)

#include <stdio.h>
#include <stdint.h>
#include <string.h>

int main(void){
    uint8_t rspFrm[8] = {0,};
    memset((void*)&rspFrm[0], 0xffu, sizeof(rspFrm)); // rspFrm[0]부터 8바이트를 ff로 값을 세팅한다.
    for (int i = 0; i < sizeof(rspFrm); i++) {
        printf("%d ", rspFrm[i]);
    }
}

 

728x90

'C언어' 카테고리의 다른 글

[C언어] (void *) 포인터란?  (0) 2024.10.10
[C언어] memcpy() 함수  (0) 2024.10.10
[C언어] realloc() 함수  (0) 2024.10.08
[C언어] calloc() 함수  (0) 2024.10.08
[C언어] malloc() 함수  (0) 2024.10.08