-
std::copy(memcpy)와 std::move(memmove)의 차이프로그래밍/c++ 2015. 2. 20. 23:05반응형
memcopy는 서로 같은 메모리에 복사를 하는것이 아니라는걸 가정하에 하는 반면
memmove는 서로 같은 메모리 영역에 복사를 할 수도 있는 상황을 가정한다.
memmove
위 그림처럼 같은 메모리에서 내 이동이 가능하므로 move라는 네이밍이 붙는다.
코드로 차이점을 풀어보자면...
char buffer0[100];char buffer1[100];std::memcpy(buffer1, buffer0, sizeof(buffer0)); // OKstd::memcpy(buffer0, buffer0, sizeof(buffer0)); // NO!std::memmove(buffer1, buffer0, sizeof(buffer0)); // OKstd::memmove(buffer0, buffer0, sizeof(buffer0)); // OKmemmove는 버퍼가 겹칠 수도 있음(같은 버퍼에 데이터를 쓰는 상황!)을 고려하므로
서로 다른 버퍼에 쓰는 작업을 할 시에는 memcpy의 성능이 더 좋다.
반응형'프로그래밍 > c++' 카테고리의 다른 글
std::decay<T>의 사용 (0) 2015.03.04 [c++] 코드 스크랩 (0) 2015.02.24 std::copy의 반환 값 (0) 2015.02.19 scanf_s (0) 2015.02.08 C++ 오브젝트 생성시 {}와 () =의 구분 (0) 2015.02.02