memcpy手写实现:
void *Memcpy(void *dst, const void *src, size_t size)
{
if (dst == NULL || src == NULL)
return NULL;
char *psrc;
char *pdst;
//地址重叠的情况
if ((src < dst) && (char*)src + size > (char *)dst)
{
psrc = (char*)src + size - 1;
pdst = (char*)dst + size - 1;
while(size--)
{
*pdst-- = *pdst--;
}
}else {
psrc = (char*)src;
pdst = (char*)dst;
while(size--)
{
*pdst++ = *psrc++;
}
}
return dst;
}