Possible Duplicate:
memcpy vs memmove
是否 memmove实际上“移动”了一 block 内存?如果是这样,它会留下零吗?或者,它就像 memcpy ?我正在查看手册页,但我不相信我的假设是正确的。如果我想使用 memmove 移动一 block 内存,我是否必须手动将我移动的那 block 内存清零?
最佳答案
memmove
与清除旧内存无关,事实上,只有在您想使用 memmove
的情况下,清除旧内存会破坏您刚刚复制的数据!这是因为 memmove
仅在您期望源和目标范围重叠时才有用。
通常,如果您发现自己需要 memmove
,则表明您的设计存在严重的基本效率低下。例如,新的 C 程序员通常会尝试使用 memmove
来删除字符串的前几个字符(例如 memmove(s, &s[1], len)
)而不是不仅仅是使用 s+1
或 &s[1]
来处理字符串的尾部。包含 memmove
的算法的性能很少比 O(n^2) 好。
关于c - memmove 实际上是 "move"一 block 内存并在源头留下零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877173/