免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: shaqianqing
打印 上一主题 下一主题

[C] strcpy入参是NULL会导致进程异常吗 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-11-20 18:53 |只看该作者
好吧...那也没在重点上回复 10# kaede_1


   

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
12 [报告]
发表于 2014-11-21 08:41 |只看该作者
回复 11# shaqianqing


    重点是你看的源码有问题,源码里没有对空进行判断。你自己可以写个小例子,向strcpy里传递NULL串试试就知道了。
    源码实现如下:
  1. /* Copy SRC to DEST.  */
  2. char *
  3. strcpy (dest, src)
  4.      char *dest;
  5.      const char *src;
  6. {
  7.   reg_char c;
  8.   char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src);
  9.   const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1;
  10.   size_t n;

  11.   do  
  12.     {   
  13.       c = *s++;
  14.       s[off] = c;
  15.     }   
  16.   while (c != '\0');

  17.   n = s - src;
  18.   (void) CHECK_BOUNDS_HIGH (src + n);
  19.   (void) CHECK_BOUNDS_HIGH (dest + n);

  20.   return dest;
  21. }
复制代码

论坛徽章:
0
13 [报告]
发表于 2014-11-21 15:49 |只看该作者
是应该自己从实际出发去体验才知道其中的结果回复 12# kaede_1


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP