C++ 经典面试题memcpy考虑内存重叠情况
这个基本是srccpy增加异常处理void* memmove(void* dst,const void* src,size_t count){assert(NULL !=src && NULL !=dst);char* tmpdst = (char*)dst;char* tmpsrc = (char*)src;if (tmpdst <= tmpsrc || tmpdst &g
·


这个基本是srccpy


增加异常处理
void* memmove(void* dst,const void* src,size_t count)
{
assert(NULL !=src && NULL !=dst);
char* tmpdst = (char*)dst;
char* tmpsrc = (char*)src;
if (tmpdst <= tmpsrc || tmpdst >= tmpsrc + count)
{
while(count--)
{
*tmpdst++ = *tmpsrc++;
}
}
else
{
tmpdst = tmpdst + count - 1;
tmpsrc = tmpsrc + count - 1;
while(count--)
{
*tmpdst-- = *tmpsrc--;
}
}
return dst;
}
更多推荐




所有评论(0)