memory_cpy // 版本 1 void *memcpy(void *dest, const void *src, size_t count) { char *tmp = dest; const char *s = src; while (count--) *tmp++ = *s++ ; // 先取出s的内容,后s+1 return dest; } //版本 2 考虑重叠 void *memcpy(void *dest, const void *src, size_t count) { char *d; const char *s; if (dest > (src+size)) || (dest < src)) { d = dest; s = src; while (count--) *d++ = *s++; } else /* overlap 重叠情况从高位到低位复制*/ { d = (char *)(dest + count - 1); /* offset of pointer is from 0 */ s = (char *)(src + count -1); while (count --) *d-- = *s--; } return dest; }
原文:https://www.cnblogs.com/htj10/p/11871363.html