memmove()

来源:互联网 发布:优酷不能登录淘宝账号 编辑:程序博客网 时间:2024/05/23 17:31

memcpy()只是memmove()的一个子集


memcpy()在执行内存重叠的情况下时,就会发生错误,而memmove()不会

void *memmove(void *dest, const void *src, size_t count){    assert((dest!=0)&&(src!=0));    unsigned char *pdest =(char * )dest;    unsigned char *psrc = (char * )src;    int i=0;    if ((pdest < psrc) || (pdest > psrc + count)) ///正向拷贝    {        for (i= 0; i < count; i++)         {          *pdest ++ = *psrc ++;        }    }    else      /*反向拷贝*/    {       psrc += count;       pdest += count;        for (i= 0; i < count; i++)       {           psrc --;           pdest --;           *pdest = *psrc;       }     }    return dest;}


1 0