需要考虑其中一个为NULL的情况。
#include <iostream>
using namespace std;
void *memmove(void *aDest, void *aSrc, size_t lenght){
if(aDest==NULL||aSrc==NULL){
return NULL;
}
char *dest = (char *) aDest;
char *src = (char* )aSrc;
if(dest>src){
dest=dest+lenght-1;
src=src+lenght-1;
while(lenght--){
*dest--=*src--;
}
}else if(dest<src){
while(lenght--){
*dest++=*src++;
}
}
return dest;
}
int main(int argc ,char ** argv){
char a[]="fff";
char b[]="ggggg";
memmove(b,a,2);
cout<<b<<endl;
}
本文展示了一个 C++ 版本的 memmove 函数实现,该实现考虑了源和目标指针重叠的情况,并处理了其中一个指针为 NULL 的边界情况。通过示例演示了如何使用 memmove 进行内存块的移动。
1394

被折叠的 条评论
为什么被折叠?



