内存操作函数

memmove()函数

简介

        memmove()函数是C语言中的一个库函数,用于将一块内存中的数据复制到另一块内存中,即内存块拷贝。

        memmove()函数能够处理源内存和目标内存重叠的情况。如果源内存和目标内存重叠,memmove()函数会先将源内存中的数据复制到一个临时缓冲区,然后再把数据拷贝到目标内存中,确保数据的准确性。

模拟实现memmove()函数(优化版)

dest目标内存的指针,src源内存的指针,size是要复制的字节数;源地址目的地址的类型设置为无类型指针(void*)便于函数可以处理任意类型的数据,源地址指针加const定义为常量指针,防止拷贝的过程中将来源的内容不慎修改

注意:目标内存的起始地址在源地址后面时为避免覆盖未复制的数据,从源内存块的的末尾开始复制

void* memmove(void *destStr,const void *str,size_t size)
    char *pDestStr=(char*)destStr;
    char*pStr=(char*)Str;
    if(pStr>pDestStr)//目标内存块的起始地址在源内存地址前面
    {
        for(size_t i=0;i<size;++i)
        {
            *(pdestStr[i])=*(pStr[i]);
        }
    }
    else//目标内存块的起始地址在源内存地址后面
    {
        for(int i=size-1;i>=0;--i)
        {
            *(pDestStr[i])=*(pStr[i]);
        }
    }
    return destStr;//返回拷贝后的目的地内存块的起始地址
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值