memmove函数分析

来源:互联网 发布:淘宝店被关闭 编辑:程序博客网 时间:2024/05/20 23:56

memmove函数考虑到复制过程中出现内存重叠的情况,

其函数原型为void * MemMove(void * pDst, const void * pSrc, int nLength)

当出现内存重叠时,必须设计复制过程, 避免数据被破坏。

目标地址的内存空间首部和源地址内存空间的尾部有重叠,需要从源地址尾部开始复制, 其余时候都可以从前往后拷。

void * MemMove(void * pDst, const void * pSrc, int nLength){char * pcDst = (char *)pDst;char * pcSrc = (char *)pSrc;if (pDst == NULL || pSrc == NULL ){throw string("error");pDst = NULL ;return NULL;}else if ( pcDst <  pcSrc +  nLength && pcDst > pcSrc){pcDst += nLength-1;pcSrc += nLength-1;while (nLength--){*pcDst-- = * pcSrc--;}} else{while (nLength--){*pcDst++ = * pcSrc++;}}return pDst;}


0 0
原创粉丝点击