void* Memcpy(void *p, void *p1,size_t count)
{
assert(p && p1);
char *pDest = static_cast<char*>(p);
char *pSrt = static_cast<char*>(p1);
while(count--)
{
*pDest++ = *pSrt++ ;
}
return pDest;
}
void *Memmove(void *Dst, const void*Src,size_t count)
{
assert(Dst && Src);
void* pDst = Dst;
if (Dst<Src && (char*)Dst > (char*)Src + count)
{
while(count--)
{
*(char*)Dst = *(char*)Src;
Dst = (char*)Dst + 1;
Src = (char*)Src + 1;
}
}
else
{
Dst = (char*)Dst + count - 1;
Src = (char*)Src + count - 1;
while(count--)
{
*(char*)Dst = *(char*)Src;
Dst = (char*)Dst -1 ;
Src = (char*)Src -1 ;
}
}
return pDst;
}
本文介绍了两种内存复制函数的实现方式:memcpy与memmove。memcpy适用于源和目标没有重叠的情况,而memmove则可以处理源与目标重叠的问题。通过逐字节拷贝的方式实现了这两个函数,并使用断言确保了输入参数的有效性。
3043

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



