您的位置:首页 > 其它

memcpy和 memmove有什么区别

2012-05-11 21:26 417 查看
如果源和目的的参数有重叠,memmove能够提供保证的行为,而memcpy则不能提供这样的保证行为,因此可以实现得更加有效率。如果对你的程序有疑问,最好使用memmove。

实现memmove()好像很容易,只需要额外的检测即可对重叠参数提供有效的保证。

void *memove(void *dst,void *src,size_t n)
{
      register char *dp = dst;
      register char  const *sp = src;
      if(dp<sp){
          while(n-->0){
                *dp++ = *sp++;
           }
      }
       else{
            dp+=n;
            sp+=n;
            while(n-->0)
            {
                *--dp = *--sp;
            }
       }
       return dest;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: