c语言之自定义memcpy

void *Memcpy(void *dest, const void *src, size_t count)  
{  
   cout<<"sizeof(dest)是:"<<sizeof(dest)<<endl;
	int bytelen=count/sizeof(dest);	/*按CPU位宽拷贝*/
	int slice=count%sizeof(dest);	/*剩余的按字节拷贝*/
	unsigned int* d = (unsigned int*)dest;  
    unsigned int* s = (unsigned int*)src;  

 if (((int)dest > ((int)src+count)) || (dest < src))  
    {  
    while (bytelen--)  
        *d++ = *s++;  
	while (slice--)  
        *(char *)d++ = *(char *)s++; 
    }  
 else /* overlap重叠 */  
    {  
    d = (unsigned int*)((unsigned int)dest + count - 4); /*指针位置从末端开始,注意偏置 */  
    s = (unsigned int*)((unsigned int)src + count -4);  
    while (bytelen --)  
        *d-- = *s--;  
	d++;s++;
	char * d1=(char *)d;
	char * s1=(char *)s;
	d1--;s1--;
	while (slice --)  
        *(char *)d1-- = *(char *)s1--; 
    }  
 return dest;  
}  

posted @ 2025-09-24 09:40  我不是萧海哇~~~  阅读(6)  评论(0)    收藏  举报