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