免费注册 查看新帖 |

Chinaunix

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

[C] C语言赋值操作也推出?求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-02 18:29 |只看该作者 |倒序浏览
问题来了,在移植djbdns的代码,跟踪到这里,发现在1111111111处停下来,如果注释掉111111111,那么就在222222222处停下来

按理说1111111111和222222222222都只是简单操作,111处为无返回值的操作,222处为简单赋值。程序运行也没有崩溃信息,只是正常退出

求解为什么退出?

  1. //**out是一段域名,如03www05baidu03com
  2. int dns_domain_copy(char **out,const char *in)
  3. {
  4.   unsigned int len;
  5.   char *x;
  6.   printf("zengqjdebug file=%s, line = %d\r\n", __FILE__, __LINE__);
  7.   len = dns_domain_length(in);
  8.   printf("zengqjdebug file=%s, line = %d\r\n", __FILE__, __LINE__);
  9.   x = alloc(len);
  10.   printf("zengqjdebug file=%s, line = %d\r\n", __FILE__, __LINE__);
  11.   if (!x) return 0;
  12.   printf("zengqjdebug file=%s, line = %d\r\n", __FILE__, __LINE__);
  13.   byte_copy(x,len,in);
  14.   printf("zengqjdebug file=%s, line = %d\r\n", __FILE__, __LINE__);
  15.   if (*out) alloc_free(*out);//1111111111111
  16.   printf("zengqjdebug file=%s, line = %d\r\n", __FILE__, __LINE__);
  17.   *out = x;//22222222222222
  18.   printf("zengqjdebug file=%s, line = %d\r\n", __FILE__, __LINE__);
  19.   return 1;
  20. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2014-12-03 00:05 |只看该作者
停下来的意思就是正常退出?

论坛徽章:
0
3 [报告]
发表于 2014-12-03 09:22 |只看该作者
回复 2# e2zhangwen


    我以为没有任何错误提示的退出就是正常退出,如果内存越界会报段错误吧

论坛徽章:
0
4 [报告]
发表于 2014-12-03 11:58 |只看该作者
回复 2# e2zhangwen


    唉,确实是指针没有申请内存空间
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP