内存拷贝函数的实现

来源:互联网 发布:淘宝售后退款多久到账 编辑:程序博客网 时间:2024/05/18 00:03

简单的内存拷贝函数的实现:

void *memcpy(void *dest, const void *src, size_t count){ char *tmp = dest; const char *s = src; while (count--)  *tmp = *s ; return dest;}
注意到,当原内存和目的内存存在内存重叠时,这个拷贝函数是错误的,先前填充的值会覆盖掉还未进行拷贝的值。

改进后的内存拷贝函数:

void *memcpy(void *dst, const void *src,size_t size){    char *psrc;char *pdst;    if(NULL == dst ||NULL == src)    {        returnNULL;    }     if((src < dst)&& (char *)src + size > (char *)dst) // 自后向前拷贝    {        psrc= (char *)src + size - 1;        pdst= (char *)dst + size - 1;        while(size--)        {            *pdst--= *psrc--;        }    }    else//从前向后拷贝    {        psrc= (char *)src;        pdst= (char *)dst;        while(size--)        {            *pdst++= *psrc++;        }    }    return dst;}




0 0
原创粉丝点击