内存重叠:Dest和Src其中一部分是重叠的。
void* my_memcpy(void* dest,const void* src,size_t count)
{
assert(dest != NULL && src != NULL && count > 0);
char* temp_src = (char*)src;
char* temp_dest = (char*)dest;
if ((dest > (char*)src + count) || ((char*)dest < src))
{
while(count --)
{
*temp_dest++ = *temp_src++;
}
}else{
temp_src+= count -1;
temp_dest+= count -1;
while(count--)
{
*temp_dest-- = *temp_src--; //*--tmp_dest = *--tmp;
}
}
return dest;
}