首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟我写的一个memcpy,大神看一上,指点一二!多谢

2013-03-12 
我写的一个memcpy,大神看一下,指点一二!谢谢!这是我写的memcpy:源码为什么要那样处理呢?我写得有什么不妥

我写的一个memcpy,大神看一下,指点一二!谢谢!
这是我写的memcpy:



源码为什么要那样处理呢?我写得有什么不妥吗?求高手点拨! c
[解决办法]
charbuffer[] = "hello,world\n";
memcpy(buffer + 1, buffer, 1);
printf("%s", buffer);

所以LZ以为这样的逻辑不对?
[解决办法]
效率问题,以16byte为例,
LZ循环中判断一次操作一次,
源码中判断一次操作8个,效率更高


[解决办法]
性能优化:

比如要考贝128个字节,在库源码中只需要128/8 = 16控制语句 
i> 0; --i
而你的实现,虽然通用,却需要 128个语句
i < size;i ++)  
, 多了128-16= 112个语句,效率就不太高了。
[解决办法]
gcc的我不清楚,vc++的msdn写得很清楚: If the source and destination overlap, the behavior of memcpy is undefined. Use memmove to handle overlapping regions.

也就是说memcpy不考虑重叠的问题,由程序员自己来控制。这样做的优点自然还是高效。

热点排行