如果两段内存重叠,用 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 ();
}
老鼠















