调音台功放音响接线:C下内存拷贝问题

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 13:06:38
C下内存拷贝问题

自己对C还是不熟悉 碰到别人面试的一题 有些想不清楚...特请教各位
void memorycpy(void *.dest,const void *src,int length)
{
}
题目说得是在X86 CPU下进行内存函数拷贝 需要考虑内存重叠 和 拷贝效率


下面仅仅是构思
未必可行
如果length>=4
用两个整型指针来实现访问数据,
复制前面4n字节
剩下的用 char *指针访问拷贝结束
考虑效率的话恐怕需要研究高质量汇编语言程序设计了


能不能大概写个程序 我有点不太清楚
题目其实 也是说最好能考虑 内存重叠 和拷贝效率
当然麻烦可以先不写
谢谢


内存交叉?
听起来很麻烦哦,要是可以用memmv就好了,呵呵


memmv  这是什么不太懂....
先暂时不用考虑内存重叠


最最死板不讲效率是
void memorycpy(void *dest,const void *src,int length)
{
  if ( src+length <= dest)
  {
    for (i=0; i      *(dest+i) = *(src+i);
  }
  else
  {
      for (i=0; i        *(2*dest-src+i) = *(dest+i);
      for (i=0; i        *(dest+i) = *(src+i);  
   }
   return;
}


*(dest+i) = *(src+i);
指针能这样附值么?


能啊
*(dest+i) = *(src+i);
这样改变的不是指针的值
而是指针所指空间的值


那除开效率 就算解决了
谢谢各位
结贴