C++博客 - christanxw的专栏 - 变态之MEMCPY

来源:百度文库 编辑:神马文学网 时间:2024/06/03 14:22:02
变态之MEMCPY
void* mymemcpy( void* dest, const void* src, size_t count )
{
char* d = (char*)dest;
const char* s = (const char*)src;
int n = (count + 7) / 8; // count > 0 assumed
switch( count & 7 )
{
case 0:  do {  *d++ = *s++;
case 7:        *d++ = *s++;
case 6:        *d++ = *s++;
case 5:        *d++ = *s++;
case 4:        *d++ = *s++;
case 3:        *d++ = *s++;
case 2:        *d++ = *s++;
case 1:        *d++ = *s++;
} while (--n > 0);
}
return dest;
}
这样也行,真是长见识了~_~
int n = (count + 7) / 8;计算要复制的轮数(每轮复制8位),剩下的余数位数也要复制进去。
count & 7控制要复制余数位数,while (--n > 0)控制轮数。
比如count = 9,则n = 2,count & 7  = 1,要复制2轮,程序跳到case1执行,复制一位之后,再循环一轮,复制8位
posted on 2005-10-11 11:02christanxw 阅读(66)评论(1)  编辑 收藏收藏至365Key