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;
}
설명
- arr[10] 배열을 선언하여 크기가 10인 정수 배열을 생성한다.
- memset(arr, -1, sizeof(arr)); 를 호출하여 배열의 모든 바이트를 -1로 채운다. 각 정수는 4바이트이므로, 배열의 각 요소는 0xFFFFFFFF로 설정되어 -1이 된다.
- 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 |