打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C下内存拷贝问题
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<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;
}


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


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


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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
memcpy的用法总结
第十七将 关于字符串的拷贝
strcpy memcpy
iOS 中 copy 的原理
mem系列函数实现
memset与memcpy函数使用详细说明
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服