如果两段内存重叠,用 memcpy 函数可能会导致行为未定义。 而 memmove 函数能够避免这种问题,下面是一种实现方式,请补充代码。 
 #include <iostream>
using namespace std;
void *memmove(void *str1, const void *str2, size_t n) {
    char *pStr1 = (char *)str1;
    char *pStr2 = (char *)str2;
    if () {
        for (size_t i = 0; i != n; ++i) {
            *(pStr1++) = *(pStr2++);
        }
    } else {
        pStr1 += n - 1;
        pStr2 += n - 1;
        for (size_t i = 0; i != n; ++i) {
            *(pStr1--) = *(pStr2--);
        }
    }
    return ();
} 
                                            老鼠
                                        















