memcpy内存拷贝问题求解?

gubaochao1984 2010-10-11 08:06:51
void* memcpy( void *dst, const void *src, unsigned int len )
{
register char *d;
register char *s;
if (len == 0)
return dst;
if ( dst > src ) //为什么考虑dst > src 和dst < src 看不懂?
{
d = (char *)dst + len - 1;
s = (char *)src + len - 1;
while ( len >= 4 ) //为什么和4比较?
{
*d-- = *s--;
*d-- = *s--;
*d-- = *s--;
C++从入门到精通
6
*d-- = *s--;
len -= 4;
}
while ( len-- )
{
*d-- = *s--;
}
}
else if ( dst < src )
{
d = (char *)dst;
s = (char *)src;
while ( len >= 4 )
{
*d++ = *s++;
*d++ = *s++;
*d++ = *s++;
*d++ = *s++;
len -= 4;
}
while ( len-- )
{
*d++ = *s++;
}
}
return dst;
}
求高人解答。没看懂这代码
...全文
114 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-10-12
  • 打赏
  • 举报
回复
楼上正解!!
hsLi001 2010-10-12
  • 打赏
  • 举报
回复
“dst > src 和dst < src”应该是考虑两段内存有重叠的情况
gubaochao1984 2010-10-12
  • 打赏
  • 举报
回复
xiexie
canny38 2010-10-11
  • 打赏
  • 举报
回复
4是编译器相关的内存对齐,dst和src是考虑内存地址方向......你要不自己画个图,带入一些具体值就好理解了....

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧