본문 바로가기
Dev/C\C++

[C/C++] memset

by Ladun 2019. 11. 1.

(string.h에 선언되어 있음.)

  • memset(포인터, 설정한 값, 크기);
    • void *memset(void *_Dst, int _Val, size_t _Size);
    • 값 설정이 끝난 포인터를 반환

memset 함수는 메모리의 내용을 원하는 크기만큼 특정값으로 설정할 수 있다.

인자

_Dst

설정한 포인터의 주소로, void* 형으로 변환되어서 전달된다.

_Val

설정한 값으로, int 형 데이터를 인자로 받는다.

_Size

설정할 크기, 포인터부터 몇 바이트인지를 나타낸다.

 

리턴값
_Dst 이 리턴된다.

예시1

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

int main() {
	char* ptr = (char*)malloc(sizeof(char) * 10);

	memset(ptr, 65, sizeof(char) * 10);
	for (int i = 0; i < 10; i++) {
		printf("%3c", ptr[i]);
	}
}

결과1

  A  A  A  A  A  A  A  A  A  A

예시2

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

int main() {
	int* ptr = (int*)malloc(sizeof(int) * 10);

	memset(ptr, 1, sizeof(int) * 10);
	for (int i = 0; i < 10; i++) {
		printf("%x ", ptr[i]);
	}
}

결과2

16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009

 

예시2의 경우는 int형은 매 바이트를 1로 설정하였기에 결과가 위와 같이 나온다.

(int형이 4바이트라고 가정)

0000 0001 0000 0001 0000 0001 0000 0001 (2진법) = 16843009 (10진법)

즉, 위와 설정되어 결과2처럼 나온다.


참고자료

'Dev > C\C++' 카테고리의 다른 글

[C++] 함수와 const  (0) 2019.12.30
[C/C++] free  (0) 2019.11.07
[C/C++] malloc  (0) 2019.11.07
[C/C++] memcmp  (0) 2019.11.02
[C/C++] memcpy  (0) 2019.11.01