在阅读关于memmove的内容时,我读到它可以处理 MEMORY OVERLAPS ,但我无法知道两个字符串之间如何发生内存重叠,以及该函数如何仍能正确复制内存块。
答案 0 :(得分:5)
“内存重叠”本身不会发生。您可以为memmove
函数提供重叠的内存区域。将两个指针分成相同的数组,您可以很容易地得到重叠的内存区域。
当然,您也可以通过工会轻松创建重叠对象。
问题的第二部分(“这个功能如何才能正确复制内存块”)并不清楚你的意思。你在哪里看到这个问题?
答案 1 :(得分:3)
memmove(p+1, p, 42);
这需要移动从结尾开始的字节。 Memcpy()弄得一团糟。