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源码实现
最新推荐文章于 2025-09-11 11:09:21 发布
本文详细解析了C语言中memcpy和memmove函数的工作原理及使用场景。针对内存复制时源和目的地址是否重叠的情况,提供了不同的实现方式,确保数据正确高效地复制。
412

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



