memmove 并没有真正移动内存,不是吗?它只是将内存从一个区域复制到另一个区域,并允许这两个区域重叠。我问这个问题是因为我只是想知道为什么这个 fnc 以非常误导的方式被调用。
因为我知道当某物从一个地方移动到另一个地方时,“东西”是在这个操作之后在另一个地方而不是在第一个地方。而使用 memmove 则不能那样工作。我说得对吗?
最佳答案
你是对的,它复制了它。但是,memmove
和memcpy
还是有区别的,因为memmove
可以正确处理buffer重叠的情况,所以推荐在这些个案。
但是,由于 memmove
执行的额外检查,当缓冲区很小并且肯定不会重叠时,memcpy
会更好。
关于c++ - memmove 不动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480098/