没有考虑目标和源地址可能重复的情况,不知道除了这个方法之外不用汇编等方式还有没有更快的方法?至少我目前是想不出来:)
void *my_memcpy(void *dst, void* src, int size)
{
int len = sizeof(long);
long *pdst = (long*)dst;
long *psrc = (long*)src;
for (; size >= len; ++pdst, ++psrc, size -= len)
{
*pdst = *psrc;
}
for (len = size, size = 0; size < len; ++size)
{
*((char*)pdst + size) = *((char*)psrc + size);
}
return dst;
}
int main()
{
char src[] = "hello", dst[10] = {'\0'};
my_memcpy(dst, src, 5);
printf("dst = %s\n", dst);
return 0;
}