6.3w+
社区成员
void * __cdecl memcpy (
void * dst,
const void * src,
size_t count
)
{
void * ret = dst;
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
return(ret);
}
void *MyMemCopy(void *dest,const void *src,size_t count)
{
char *pDest=static_cast<char *>(dest);
const char *pSrc=static_cast<const char *>(src);
//注意,这里是关键,为什么要这样比较呢?理由何在?
if( pDest>pSrc && pDest<pSrc+count )
{
for(size_t i=count-1; i<=0; ++i)
{
pDest[i]=pSrc[i];
}
}
else
{
for(size_t i=0; i<count; ++i)
{
pDest[i]=pSrc[i];
}
}
return pDest;
}
for(size_t i=count-1; i<=0; ++i)//应该是for(size_t i = count-1;i>=0;--i)吧
{
pDest[i]=pSrc[i];
}