雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

memcpy的实现

Posted on 2014-03-19 19:09  huhuuu  阅读(290)  评论(0编辑  收藏  举报

memcpy的实现看起来貌似比较简单,但是也是有注意的地方!

void *memcpy(void *dst, const void *src, size_t size)
{
    //check argument
    assert(null != dst && null != src);
    
    if (dst < src)
    {
        byte *pDst = (byte*)dst;
        const byte *pSrc = (const byte*)src;
        
        while(size-- > 0)
        {
            *pDst++ = *pSrc++;
        }
    }
    else if (dst > src)
    {
        byte *pDst = (byte*)dst+size-1;
        const byte *pSrc = (const byte*)src+size-1;
        
        while(size-- > 0)
        {
            *pDst-- = *pSrc--;
        }
    }
    
    return dst;
}