一般的实现方法
void *memcpy_original(void *dst,const void *src,size_t num)
{
if((dst!=NULL)&&(src!=NULL));
{
char* psrc = (char*)src;
char* pdst = (char*)dst;
while(num-->0)*pdst++ = *psrc++;
return dst;
}
return null;
}
优化1:CPU字长,假设为num
void *mymemcpy(void *dst,const void *src,size_t num)
{
if((dst!=NULL)&&(src!=NULL))
{
int wordnum = num/4;
int slice = num%4;
int * pintsrc = (int *)src;
int * pintdst = (int *)dst;
while(wordnum--)*pintdst++ = *pintsrc++;
while (slice--)*((char *)pintdst++) =*((char *)pintsrc++);
return dst;
}
return null;
}
Linux下的实现