c++ - memmove 不动

标签 c++ c memory libc

memmove 并没有真正移动内存,不是吗?它只是将内存从一个区域复制到另一个区域,并允许这两个区域重叠。我问这个问题是因为我只是想知道为什么这个 fnc 以非常误导的方式被调用。
因为我知道当某物从一个地方移动到另一个地方时,“东西”是在这个操作之后在另一个地方而不是在第一个地方。而使用 memmove 则不能那样工作。我说得对吗?

最佳答案

你是对的,它复制了它。但是,memmovememcpy还是有区别的,因为memmove可以正确处理buffer重叠的情况,所以推荐在这些个案。

但是,由于 memmove 执行的额外检查,当缓冲区很小并且肯定不会重叠时,memcpy 会更好。

关于c++ - memmove 不动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480098/

相关文章:

c++ - 带有指向 const 对象的 const 指针的 std::vector 不编译

c - C 语言递归金字塔星形图案程序

objective-c - 设置断点,调用时为: return and continue

c++ - 在什么时候发生模板实例化绑定(bind)?

c++ - 使用 std::move 传入一个临时 lambda,或者向 "pull"输出一个临时参数,有什么区别?

c++ - 是否有一个用于位操作的(C/C++)库?

python - 垃圾收集 python rss 内存

c - 练习程序不按预期制造死锁

c - 将整个结构体指针数组传递给函数的语法是什么?

iOS NSURLConnection(sendAsynchronousRequest :) too much cache