memcpy和memmove的区别
2009-05-10 14:52
267 查看
最近一次笔试被问到了这个问题,一直没有使用过memmove,所以当时一直猜测memmove应该就是拷贝源地址的内容到目的地址,同时删除源地址的内容。这个猜测一直留着我的心里,也一直么有去验证它是否正确。
直到跟一个网友聊到这个话题的时候,他要我说出它们之间的区别,我把我猜测的意思告诉他,他告诉我完全不是那么回事的时候,我发现我错了。
查了下MSDN,和网上google了一下,发现它们之间的区别在与memmove可以处理内存折叠,就是说当目的地址与源地址空间重叠在一起的时候,memmove会在重叠区间被重写之前把原内容保存下来,可以很好的处理内存重叠问题。当使用memcpy时,如果目的地址空间在源地址空间的右边,即des<src的时候,如果目的地址空间与源地址空间区域有重叠,那么后面某些字符将会在被复制之前被覆盖掉,导致出错。
所以,一般如果在不知道源地址与目的地址位置情况,并且目的地址在源地址后边的情况下,建议使用memmove函数。
直到跟一个网友聊到这个话题的时候,他要我说出它们之间的区别,我把我猜测的意思告诉他,他告诉我完全不是那么回事的时候,我发现我错了。
查了下MSDN,和网上google了一下,发现它们之间的区别在与memmove可以处理内存折叠,就是说当目的地址与源地址空间重叠在一起的时候,memmove会在重叠区间被重写之前把原内容保存下来,可以很好的处理内存重叠问题。当使用memcpy时,如果目的地址空间在源地址空间的右边,即des<src的时候,如果目的地址空间与源地址空间区域有重叠,那么后面某些字符将会在被复制之前被覆盖掉,导致出错。
所以,一般如果在不知道源地址与目的地址位置情况,并且目的地址在源地址后边的情况下,建议使用memmove函数。
相关文章推荐
- memcpy与memmove函数的区别
- memcpy和memmove的区别
- memcpy和memmove的区别。。
- 常见内存拷贝函数:memcpy()、memmove()、strcpy()的实现及区别
- memcpy和memmove的区别
- memcpy和memmove的区别
- strcpy、memcpy、memmove的区别及实现
- memcpy() 和 memmove() 有什么区别?
- C++中memcpy和memmove的区别总结
- 浅谈memmove 和 memcpy的区别
- 关于memcpy和memmove两函数的区别
- memmove 和 memcpy的区别
- strcpy、memcpy、memmove的区别
- memmove 和 memcpy的区别
- memcpy和memmove的区别
- memmove、memcpy、strcpy三者的区别
- memmove和memcpy区别
- memset、memcpy、memmove的常见用法和区别,以及memcpy与strcpy的区别
- memmove 和memcpy有什么区别
- memcpy,memmove函数实现及区别