回 帖 发 新 帖 刷新版面

主题:求救,讲一下“拷贝内存函数”

void * memmove_kk(void * dest,const void *src,size_t count)
{
    char *tmp, *s;


    if (dest <= src) 
         {
        tmp = (char *) dest;
        s = (char *) src;
        while (count--)
            *tmp++ = *s++;
        }          

    else {
        tmp = (char *) dest + count;
        s = (char *) src + count;
        while (count--)
            *--tmp = *--s;
        }
    return dest;
}

注:明天要用,请各位帮帮忙》

回复列表 (共1个回复)

沙发

不知道你想听什么内容呢?这段程序代码上没什么难以理解的地方,就是指针在内存段上移动读写
至于那个判断,则是为了防止内存移动后产生内容损失而准备的
比如说,打算把内存里的值往后错3位,如果你从头开始复制的话,那么程序会一直复制内存的前三位数据。而目的起始地址较小的时候则要防止源地址开头的数据被覆盖,所以要从头开始复制

我来回复

您尚未登录,请登录后再回复。点此登录或注册