Programming/C++ Basic
C++ 메모리 함수
Gyong_
2020. 9. 13. 00:08
메모리 함수
-> 메모리 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를 사용해야한다.