Young & Rich

 

안녕하세요. 오늘은 C언어 memset, memcpy 에 대해서 포스팅해보겠습니다.

 

memset

void *memset ( void *data, int value, size_t size );

memory set 의 줄임말이라고 생각하시면 됩니다.

data : 값을 세팅하고 싶은 데이터의 주소값

value : 세팅하고 싶은 값

size : 세팅하고 싶은 data 변수의 크기

 

목적은 메모리의 시작주소부터 입력한 size 만큼 value 값으로 세팅할 때 사용합니다.

memset 은 구조체 및 변수를 초기화하는데 사용합니다.

 

주로 구조체 변수를 선언하고 0 값으로 초기화 할 때 사용하게 됩니다.

 

typedef struct{
	char name[16];
	int kor;
	int math;
	int eng;
}Student;

void main()
{
	Student st;

	// 선언한 구조체 변수 st 모두 0 으로 초기화
	memset(&st, 0x00, sizeof(Student));

	// st 변수 사용 코드
}

 

memcpy

void *memcpy( void *dest, void const *src, size_t size );

memcpy 는 memory copy 의 줄임말입니다.

dest : 복사할 목적지 주소값

src : 복사하고 싶은 데이터의 주소값

size : 복사할 데이터의 크기

 

어떤 변수의 메모리에 있는 값들을 다른 변수로 복사할 때 사용합니다.

 

typedef struct{
	char name[16];
	int kor;
	int math;
	int eng;
}Student;

void main()
{
	Student st, new_st;

	// 선언한 구조체 변수 st 모두 0 으로 초기화
	memset(&st, 0x00, sizeof(Student));

	// 값 입력
	strncpy(st.name, "Tory", sizeof(st.name) - 1);
	st.kor = 100;
	st.math = 100;
	st.eng = 100;

	// new_st 에 st의 값을 복사
	memcpy(&new_st, &st, sizeof(Student));
}

 

실무에서 memset 과 memcpy 는 많이 사용하는 함수입니다.

알아두면 유용합니다.

 

memset 은 초기 변수 선언 후 쓰레기값으로 채워져있는 데이터를 0으로 초기화 하는데 많이 사용합니다.

memcpy 는 큐(queue) 에 malloc 한 데이터를 넣어줄 때 사용하는 등 많은 곳에서 유용하게 사용됩니다.

 

그럼 20000.

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band