char *mymemcopy(char *dest, const char*src, size_t count) { assert(src != NULL && dest != NULL && count >= 0); if(src >= dest) while(count--) { *dest++ = *src++; } else for(int i=count-1; i>=0; i--) dest[i] = src[i]; return dest; } 主要考虑覆盖的情况,src不能在拷贝前把自己覆盖了。 memcpy不能检查长度,所以是个很容易造成溢出的函数。记得某个很出名的一处漏洞就是处理unicode字符串的时候算错了长度。