memmove 和 memcpy的区别
2009-08-13 16:12
330 查看
memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:
他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。
第一种情况下,拷贝重叠的区域不会出现问题,内容均可以正确的被拷贝。
第二种情况下,问题出现在右边的两个字节,这两个字节的原来的内容首先就被覆盖了,而且没有保存。所以接下来拷贝的时候,拷贝的是已经被覆盖的内容,显然这是有问题的。
实际上,memcpy只是memmove的一个子集。
二者的c语言实现很简单,有兴趣的朋友可以去看看。在实际情况下,这两个函数都是用汇编实现的。
void *memcpy(void *dst, const void *src, size_t count); void *memmove(void *dst, const void *src, size_t count); |
第一种情况下,拷贝重叠的区域不会出现问题,内容均可以正确的被拷贝。
第二种情况下,问题出现在右边的两个字节,这两个字节的原来的内容首先就被覆盖了,而且没有保存。所以接下来拷贝的时候,拷贝的是已经被覆盖的内容,显然这是有问题的。
实际上,memcpy只是memmove的一个子集。
二者的c语言实现很简单,有兴趣的朋友可以去看看。在实际情况下,这两个函数都是用汇编实现的。
相关文章推荐
- strcpy、memcpy、memmove的区别及实现
- 也看vc下的memcpy和memmove的区别!
- 常见内存拷贝函数:memcpy()、memmove()、strcpy()的实现及区别
- memcpy与memmove函数的区别
- memcpy和memmove的区别。。
- memcpy和memmove的区别
- memcpy和memmove的区别
- memcpy和memmove的区别
- memcpy和memmove的区别
- memcpy() 和 memmove() 有什么区别?
- C++中memcpy和memmove的区别总结
- 关于memcpy和memmove两函数的区别
- memmove 和 memcpy的区别
- 浅谈memmove 和 memcpy的区别
- memset、memcpy、memmove的常见用法和区别,以及memcpy与strcpy的区别
- memcpy和memmove的区别
- memmove和memcpy区别
- memmove、memcpy、strcpy三者的区别
- strcpy、memcpy、memmove的区别
- memmove 和 memcpy的区别