我是靠谱客的博主 彪壮鞋垫,最近开发中收集的这篇文章主要介绍memmove(),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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;
}


最后

以上就是彪壮鞋垫为你收集整理的memmove()的全部内容,希望文章能够帮你解决memmove()所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部