关于copy vs. memcpy vs memmove (excellent info here, btw.)的问题,我一直在阅读, 在我看来,这与俗语不同,例如在cppreference注意:memcpy 已更改为memmove 自从引用了这个报价。 --
笔记
在实践中,
std::copy
避免多次赋值并使用批量复制功能,例如std::memcpy
如果值类型是TriviallyCopyable
-- std::copy
(nor std::copy_backward
)不能根据 来实现memcopy
,因为std::copy
只有目标范围的开头不能落入源范围,但整个memcpy
范围不能重叠。
查看 Visual-C++ 的实现(参见xutility
标题),我们还可以观察到 VC++ 使用memmove,但现在它的要求比std::copy
:
...对象可能重叠:复制就像将字符复制到临时字符数组中一样,然后从数组中复制字符...
所以看起来不可能实现,但使用std::copy
实际上是一种悲观。(一点点悲观,可能无法衡量,但仍然)memcpy
memmove
回到问题:我的总结是否正确?这在任何地方都有问题吗?无论指定什么,是否有可能的实际实现memcpy
也不能满足 的要求,std::copy
即memcpy
当范围部分重叠时是否存在中断的实现?std::copy