可能的重复:
memcpy 与 memmove https://stackoverflow.com/questions/4415910/memcpy-vs-memmove
Does memmove http://www.cplusplus.com/reference/cstring/memmove/实际上“移动”了一块内存?如果是这样,内存中是否会留下零?或者,就像memcpy http://www.cplusplus.com/reference/cstring/memcpy/?kw=memcpy?我正在查看手册页,我不相信我的假设是正确的。如果我想使用 memmove 移动一块内存,我是否必须手动将移动的内存块清零?
memmove
与清除旧内存无关,事实上,在您想要使用的唯一情况下memmove
,清除旧内存会破坏你刚刚复制的数据!那是因为memmove
仅当您期望源范围和目标范围重叠时才有用。
通常,如果您发现自己需要memmove
,这表明您的设计存在严重的根本性低效率。例如,新的 C 程序员通常会尝试使用memmove
删除字符串的前几个字符(例如memmove(s, &s[1], len)
)而不是仅仅使用s+1
or &s[1]
来寻址字符串的尾部。算法包含memmove
很少有比 O(n^2) 表现更好的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)