void* memcpy(void* dest, void* source, size_t count)
{
void* ret = dest;
//copy from lower address to higher address
while (count--)
*dest++ = *source++;
return ret;
}
void* memmove(void* dest, void* source, size_t count)
{
void* ret = dest;
if (dest <= source || dest >= (source + count))
{
//Non-Overlapping Buffers
//copy from lower addresses to higher addresses
while (count --)
*dest++ = *source++;
}
else
{
//Overlapping Buffers
//copy from higher addresses to lower addresses 内存重叠的情况
dest += count - 1;
source += count - 1;
while (count--)
*dest-- = *source--;
}
return ret;
}
memove和memcpy源码实现
最新推荐文章于 2024-03-24 20:20:48 发布