ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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)); // OK
    std::memcpy(buffer0, buffer0, sizeof(buffer0)); // NO!
    std::memmove(buffer1, buffer0, sizeof(buffer0)); // OK
    std::memmove(buffer0, buffer0, sizeof(buffer0)); // OK


    memmove는 버퍼가 겹칠 수도 있음(같은 버퍼에 데이터를 쓰는 상황!)을 고려하므로 

    서로 다른 버퍼에 쓰는 작업을 할 시에는 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
Designed by Tistory.