【也发一段memcpy】...

healer_kx healer_kx 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我必须抱着学习的态度来问问了,因为前几天有朋友发了一段memcpy的代码,我觉得我曾经写过的代码,就显得很小儿科了。
但是很多现实问题,我依然不懂,想问问哪里有问题?或者可以改进。


void* Pz_memcpy(void* dest, void* src, size_t len)
{
size_t l = len / 8;
size_t m = len % 8;

int* si = (int*)src;
int* di = (int*)dest;
while (l--)
{
*di++ = *si++;
*di++ = *si++;
}

unsigned char* sc = (unsigned char*)si;
unsigned char* dc = (unsigned char*)di;

switch(m)
{
case 8: *dc++ = *sc++;
case 7: *dc++ = *sc++;
case 6: *dc++ = *sc++;
case 5: *dc++ = *sc++;
case 4: *dc++ = *sc++;
case 3: *dc++ = *sc++;
case 2: *dc++ = *sc++;
case 1: *dc++ = *sc++;
case 0:
default:
break;
}
return dest;
}


我确实没有考虑对齐等因素,因为不懂。。。
第二,我没有实现memmove的功能~
...全文

相关推荐

评论 43
收藏 已收藏
分享
返回顶部
healer_kx
C++ 语言 65,214 成员 250,514 内容