看流星社区

 找回密码
 注册账号
查看: 2037|回复: 0

算法练习-实现memmove,及memmove与memmcpy区别

[复制链接]

该用户从未签到

发表于 2017-6-1 13:33:47 | 显示全部楼层 |阅读模式
  1. void _Memmove(void *pDst,const void *pSrc, size_t size)
  2. {
  3.         if(NULL == pDst || NULL == pSrc || size == 0)
  4.                 return;
  5.    //内存重叠
  6.     if((pSrc<pDst) && ((char*)pSrc+size > pDst))
  7.     {  
  8.         char *pstrSrc= (char *)pSrc + size -1;  
  9.         char *pstrDst = (char *)pDst + size -1;
  10.        //从尾部拷贝
  11.         while(size--)   
  12.             *pstrDst -- = *pstrSrc--;
  13.     }
  14.     else
  15.     {  
  16.         char *pstrSrc= (char *)pSrc ;  
  17.         char *pstrDst = (char *)pDst ;
  18.         //没有就正常拷贝
  19.         while(size--)   
  20.         *pstrDst++ = *pstrSrc++;
  21.     }
  22. }
复制代码


memmove考虑的内存重叠
memmcpy没有考虑
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 17:17

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表