免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1472 | 回复: 5
打印 上一主题 下一主题

memcpy的 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-30 10:50 |只看该作者 |倒序浏览
最近无聊看看glib
发现 一个问题
void *
memcpy (dstpp, srcpp, len)
     void *dstpp;
     const void *srcpp;
     size_t len;
{
  unsigned long int dstp = (long int) dstpp;
  unsigned long int srcp = (long int) srcpp;
这两句是什么 ? 我在网上 也看到一些代码

void memcpy(void *pvTo, void *pvFrom, size_t size)
{
void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom;
assert( pvTo != NULL && pvFrom != NULL );
while(size - - > 0 )
*pbTo + + = *pbFrom + + ;
return (pvTo);
}
说void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom; 是为了 防止地址改变 ?我比较困惑  
请教一下大家 什么时候 会发生地址改变?

论坛徽章:
0
2 [报告]
发表于 2006-03-30 13:21 |只看该作者
大家都不知道吗?期待中。。。。。。。。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2006-03-30 14:21 |只看该作者
void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom;

应该是
byte *pbTo = (void *) pvTo;
byte *pbFrom = (void *) pvFrom;

论坛徽章:
0
4 [报告]
发表于 2006-04-01 21:40 |只看该作者
保存指针的基址,用于返回

论坛徽章:
0
5 [报告]
发表于 2006-04-01 22:30 |只看该作者

回复 1楼 vagabondyl 的帖子

上面程序段的应该为:
void memcpy(void *pvTo, void *pvfrom, size_t size)
{
byte *pbTo = (byte *)pvTo;
byte *pbFrom = (byte *)pvFrom;
assert(pvTo != NULL && pvFrom != NULL);
while (size-- > 0)
{
*pbTo++ = *pbFrom++;
}
return (pvTo);
}
声明pbTo, pbFrom的目的是转换成字节指针,用来完成内存复制。同时因为没有修改pvTo指针,所以pvTo指针可以返回,以指示目的内存块的首地址。

论坛徽章:
0
6 [报告]
发表于 2006-04-02 14:12 |只看该作者
void memcpy(void *pvTo, void *pvfrom, size_t size)
{
      assert(pvTo != NULL && pvFrom != NULL);
      while (size-- > 0)
      {
           *pbTo++ = *pbFrom++;
      }
     return (pvTo);             //pvto指向的地址已经被改变
}
老董,你还把照片贴上来所??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP