메모리 함수

-> 메모리 vs 메모리 단위로 복사, 초기화를 수행하는 함수.

-> 메모리에 직접 접근하여 데이터를 다루기 때문에 속도가 빠르다.

 

#1. memset

-> 초기화 함수

-> 1byte 단위로 초기화를 진행한다.

-> 연속된 메모리를 사용하는 공간을 초기화할 때 사용한다.

void* _Dst : 초기화할 메모리의 시작 주소 전달

int _Val : 초기화할 값

size_t _size : 시작 주소부터 얼마만큼 크기를 초기화할 것인지 전달(byte단위)

int a;

     a = 0;

	memset(&a, 1, sizeof(int));		// 16843009
	// 0000 0001   0000 0001   0000 0001   0000 0001

 

memset(ptr, 0, sizeof(int) * 5);

int* ptr = new int[5];

for(int i = 0; i < 5; ++i)
{
 ptr[i] = 0;
}

여기서 memset과 for문은 서로 같다.

 

#2. memcpy

-> 메모리 복사 함수

void* _Dst : 복사 받을 메모리의 시작 주소

const void* _Src : 복사 할 메모리의 시작 주소

size_t _size : 얼마만큼 복사할 것인지 크기(byte단위)

 

int a = 0, b = 10;
	
memcpy(&a, &b, sizeof(int));
a = b;

여기서 memcpy는 a를 b에 대입한 것과 같다.

 

#3. memmove

-> 메모리 복사 함수

-> memcpy와 수행은 똑같다.

 

memcpy와 memmove의 차이점

memcpy memmove
표준이 아니다.
복사할 곳에 직접적으로 복사가 진행된다.
표준이다.
임시 버퍼를 통해 복사를 진행한다.

메모리가 겹칠 경우에는 memcpy 함수보다는 memmove를 사용해야한다.

'Programming > C++ Basic' 카테고리의 다른 글

C++ 전방 선언  (0) 2020.09.13
C++ 생성자와 소멸자, explicit 키워드  (2) 2020.09.13
C++ 클래스, 클래스의 4대 속성  (1) 2020.09.10
C++ Debug, 조건식 Debug  (0) 2020.09.08
C++ string  (0) 2020.09.08

+ Recent posts