其实,林锐的《高质量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;
}
本文提供了一个自定义的内存拷贝函数MyMemcpy的实现代码。该函数能够处理不同情况下的内存拷贝,包括源地址与目标地址重叠的情况,并通过前后向拷贝策略确保数据正确转移。
5062

被折叠的 条评论
为什么被折叠?



