C下内存拷贝问题

starysky 2005-04-11 07:24:28
自己对C还是不熟悉 碰到别人面试的一题 有些想不清楚...特请教各位

void memorycpy(void *.dest,const void *src,int length)
{
}
题目说得是在X86 CPU下进行内存函数拷贝 需要考虑内存重叠 和 拷贝效率
...全文
204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
starysky 2005-04-11
  • 打赏
  • 举报
回复
那除开效率 就算解决了
谢谢各位
结贴
pcboyxhy 2005-04-11
  • 打赏
  • 举报
回复
能啊
*(dest+i) = *(src+i);

这样改变的不是指针的值
而是指针所指空间的值
starysky 2005-04-11
  • 打赏
  • 举报
回复
*(dest+i) = *(src+i);
指针能这样附值么?
neophyte111 2005-04-11
  • 打赏
  • 举报
回复
最最死板不讲效率是
void memorycpy(void *dest,const void *src,int length)
{
if ( src+length <= dest)
{
for (i=0; i<length; i++)
*(dest+i) = *(src+i);
}
else
{
for (i=0; i<src+length-dest; i++)
*(2*dest-src+i) = *(dest+i);
for (i=0; i<dest-src; i++)
*(dest+i) = *(src+i);
}
return;
}
starysky 2005-04-11
  • 打赏
  • 举报
回复
memmv 这是什么不太懂....
先暂时不用考虑内存重叠
FlyWithJo 2005-04-11
  • 打赏
  • 举报
回复
内存交叉?
听起来很麻烦哦,要是可以用memmv就好了,呵呵
starysky 2005-04-11
  • 打赏
  • 举报
回复
能不能大概写个程序 我有点不太清楚
题目其实 也是说最好能考虑 内存重叠 和拷贝效率
当然麻烦可以先不写
谢谢
pcboyxhy 2005-04-11
  • 打赏
  • 举报
回复
下面仅仅是构思
未必可行

如果length>=4

用两个整型指针来实现访问数据,
复制前面4n字节
剩下的用 char *指针访问拷贝结束


考虑效率的话恐怕需要研究高质量汇编语言程序设计了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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