#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void my_memcpy(char *dest,const char * sour,int len)
{
char * dst = NULL;
const char * src = NULL;
if (dest>sour+len || dest<sour)
{
printf("内存不重叠情况.....\n");
dst = dest;
src = sour;
while (len)
{
*dst = *src;
dst++;
src++;
len--;
}
}
else
{
printf("内存重叠情况.....\n");
dst = dest + len-1;
src = sour + len-1;
while (len)
{
*dst = *src;
dst--;
src--;
len--;
}
}
return;
}
int main()
{
/* 内存不重叠情况*/
char *source = "didi_Test";
int len = strlen(source);
printf("len = %d\n",len);
char *dest = NULL;
dest = (char *)malloc(sizeof(char)*(len+1));
printf("source = %p , dest = %p\n",source,dest);
memset(dest,0,len+1);
my_memcpy(dest,source,len+1);
printf("%s\n",dest);
prin
手动实现memcpy涉及内存重叠与不重叠情况
最新推荐文章于 2023-08-31 10:08:05 发布
本文详细探讨了手动实现memcpy函数时如何处理内存重叠和不重叠的情况。通过实例分析,解释了在复制过程中如何避免数据错误,并探讨了标准库中的memcpy如何优化这些问题。
摘要由CSDN通过智能技术生成