内存重叠是如何发生的以及如何控制?

时间:2010-09-03 16:25:06

标签: c memmove

在阅读关于memmove的内容时,我读到它可以处理 MEMORY OVERLAPS ,但我无法知道两个字符串之间如何发生内存重叠,以及该函数如何仍能正确复制内存块。

2 个答案:

答案 0 :(得分:5)

“内存重叠”本身不会发生。您可以为memmove函数提供重叠的内存区域。将两个指针分成相同的数组,您可以很容易地得到重叠的内存区域。

当然,您也可以通过工会轻松创建重叠对象。

问题的第二部分(“这个功能如何才能正确复制内存块”)并不清楚你的意思。你在哪里看到这个问题?

答案 1 :(得分:3)

 memmove(p+1, p, 42);

这需要移动从结尾开始的字节。 Memcpy()弄得一团糟。