二者的区别在于memmove拥有缓冲区,而memcpy没有。由于没有缓冲区,会带来常说的安全问题。
注意,在这里说的安全与否是指:目的地址是不是我们起初想要的数据,而不关心经过拷贝后源地址数据是否改变。
- 在第一种情况下,二者都是从src拷贝到dest,这时两者都是安全的。
- 第二种情况时,使用memcpy由于dst是src的一部分。开始拷贝时src的内容就被改变了,所以src的最后几个数据被销毁了。但使用memmove会先把数据读到自己的缓冲区,即使src的最后几个被覆盖了,源数据还在缓冲区中。