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);
这样改变的不是指针的值
而是指针所指空间的值
那除开效率 就算解决了
谢谢各位
结贴
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。