其实,林锐的《高质量C++/C编程指南》中就有实现。这里只是自己实现一下,方便各位在网上找到。
void* MyMemcpy(void* dst, const void* src, int count)
{
char *pdst = (char *)dst;
char *psrc = (char *)src;
int cnt = count;
// 输入判断
if (pdst == (char *)0 || psrc == (char *)0)
{
return (void *)0;
}
// 内存拷贝
if (pdst > psrc && pdst < (psrc + count)) // 自后向前(目标地址比源地址比原地址高且与源空间重叠,如果自前向后拷贝会覆盖掉目标地址前面的内容)
{
pdst += (cnt -1);
psrc += (cnt -1);
while (cnt--)
{
*pdst-- = *psrc--;
}
}
else // 自前向后
{
while (cnt--)
{
*pdst++ = *psrc++;
}
}
return dst;
}