C++기초

220325(4)_memset, memcpy

hyrule 2022. 4. 5. 16:57
#include <iostream>


int main()
{
	//memset : 메모리를 내가 원하는 크기만큼 원하는 값으로
	//채워주고자 할 때 사용한다.
	//**단, 1바이트 단위로 값을 채워준다.**
	int NumberArray[10] = { 1,2,3,4,5 };

	//1번인자 : 메모리 주소
	//2번인자 : 채워줄 값
	//3번인자 : 채워줄 메모리 크기
	memset(NumberArray, 1, sizeof(int) * 10);
	//NumberArray 배열을 4*10(40byte)만큼 1로 채워라.
	//이상한 값이 출력된다
	//왜냐하면 int는 4byte 단위로 숫자를 읽는데, 
	//memset은 1바이트 단위로 1을 넣기 때문이다.

	//선생님은 일반적으로 배열을 0으로 초기화하는데 쓴다고 함


	//memcpy : 메모리를 복사할 때 사용한다.
	int NumberArray1[10] = {};

	//1번인자 : 메모리 주소
	//2번인자 : 복사할 값
	//3번인자 : 복사할 메모리 크기
	//1번인자의 주소에 2번인자의 주소로부터 3번인자의 크기만큼을 복사한다.
	std::cout << "복사 전 : ";
	for (int i = 0; i < 10; ++i)
	{
		std::cout << NumberArray1[i];
	}
	memcpy(NumberArray1, NumberArray, sizeof(int) * 10);
	std::cout << "\n복사 후 : ";
	for (int i = 0; i < 10; ++i)
	{
		std::cout << NumberArray1[i];
	}
	//C++의 엄청난 장점. 메모리를 고속으로 복사하기 때문에 속도가 매우 빠르다.
	//memset, memcpy 매우 중요!!

	return 0;
}