memcpy和memmove的区别

memcpy和memmove都是用于内存缓冲区的数据移动,但二者有明显的区别:

1、前者是拷贝,即仍然保存着原始的完整数据,但是后者是移动,之前是一份数据,之后也是一份数据,只是位置发生了变化;

2、memcpy不能防止overlapping区域的内存覆盖问题,即如果源数据区和目的数据区发生了重叠,则可以源数据区中的重叠部分将会被覆盖,如果这些数据在被拷贝之前发生,则还会影响到这些数据目的内存区需要的数据。而memmove就不会发生这种情况。

如果我们不希望发生前面所说的memcpy重叠区覆盖问题,则可以事先调用memmove 合理地移动重叠区中的数据,以避免重叠区中的数据被重写。

你可能感兴趣的:(memcpy和memmove的区别)