标签:c;内存拷贝函数
/************************************************************************************1.模拟实现memmove函数的实现。(考虑内存重叠) ************************************************************************************/ #include<stdio.h> #include<string.h> #include<assert.h> void * my_memmove(void *aim,const void *source,int length) { int i = 0; void *p = aim; assert(aim&&source); if (((char*)aim - (char*)source) >= 0)//内存重叠从后往前拷贝 { for (i = length-1; i >=0; i--) { *((char *)aim + i*sizeof(char)) = *((char *)source + i*sizeof(char)); } return (p); } else //不重叠 正常拷贝 { for (i = 0; i <length; i++) { *((char *)aim + i*sizeof(char)) = *((char *)source + i*sizeof(char)); } return (p); } } // 1 2 3 4 5 6 7 8 9 0 0 // *0*1*2*3*4*5*6*7*8*9*10 //1 2 3 4 5 6 7 8 9 0 0 int main() { int arr[11] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; int i = 0; my_memmove(arr, arr , 36); for (i; i < 11; i++) printf("%d\n",arr[i]); /*for (i = 0; i < 10;i++) printf("%d\n",*( (int *)my_memmove(arr, arr+1, 36)+1));*/ return 0; }
标签:c;内存拷贝函数
原文地址:http://shaungqiran.blog.51cto.com/10532904/1683111