免费注册 查看新帖 |

Chinaunix

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

关于“永远的UNIX”主页上的一篇文章 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2005-01-08 22:23 |只看该作者

关于“永远的UNIX”主页上的一篇文章

原帖由 "assiss" 发表:

判断NULL是个好习惯,但我觉得这更应该是程序员的事,不该由此函数来承担。


我也这么认为,就象strcpy(char* dest,const char* src)这个函数,linux源代码的实现根本不检测指针是否NULL,倒是某些国内教科书检测。
个人认为如果要库函数来保证健壮性,那还要检测内存是否越界够不够等等,代码庞大冗余,所以函数要做的只是提供功能,至于输入的健壮性是程序员的事。

论坛徽章:
0
22 [报告]
发表于 2005-01-09 09:13 |只看该作者

关于“永远的UNIX”主页上的一篇文章

原帖由 "FH" 发表:
如果:
str1:'abcdef\0'
str2:'abcdef'
不会越界么?

不同意。C语言中字符串应该是以0结尾的。
感觉这个问题应该归结为在什么时候对字符串有效性(是否为空是否符合C字符串定义)的检查。在一个底层的字符串比较中进行字符串有效性检查从效率的角度不是很好。俺现在也没什么这方面的成熟的想法,只是一点想法而已。一个字符串引入以后,可能有大量的函数对其进行操作,若是每一个函数中都分别进行有效性检查,岂不是很浪费。若是放在字符串引入时刻和改动时刻检查有效性,这样就能一直保持字符串的有效性,可以不在每一个函数内分别检查。从而从整体上减少冗余操作。

论坛徽章:
0
23 [报告]
发表于 2005-01-09 10:24 |只看该作者

关于“永远的UNIX”主页上的一篇文章

完全同意FH的看法,“我敢负责任的说,后果很严重!”判断'\0'和NULL都会出错!

论坛徽章:
0
24 [报告]
发表于 2005-01-09 10:36 |只看该作者

关于“永远的UNIX”主页上的一篇文章

原帖由 "FH" 发表:
如果:
str1:'abcdef\0'
str2:'abcdef'
不会越界么?

如果str2不以\0结束,那你又如何判断它?再给函数传一个str2的实际长度?

论坛徽章:
0
25 [报告]
发表于 2005-01-09 11:21 |只看该作者

关于“永远的UNIX”主页上的一篇文章

如果,非要传一个不以0结尾的东西给这个函数,这根本就是使用者的失误。除了字符串的引入者,难道别人还有能力和责任检查一个字符指针是否指向了一个所谓的C语言字符串?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
26 [报告]
发表于 2005-01-09 12:22 |只看该作者

关于“永远的UNIX”主页上的一篇文章

^_^,一个问题。不在这个函数判断就要在调用的函数判断,不过是一个由谁来控制的权限问题,和效率的权衡问题。
diny 该用户已被删除
27 [报告]
发表于 2005-01-09 14:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
28 [报告]
发表于 2005-01-09 14:52 |只看该作者

关于“永远的UNIX”主页上的一篇文章

原帖由 "assiss" 发表:

如果str2不以\0结束,那你又如何判断它?再给函数传一个str2的实际长度?

函数就是要覆盖最多的可能。使用者可不考虑这么多。

论坛徽章:
0
29 [报告]
发表于 2005-01-09 15:36 |只看该作者

关于“永远的UNIX”主页上的一篇文章

原帖由 "eagerly1" 发表:

函数就是要覆盖最多的可能。使用者可不考虑这么多。

那是JAVA、C#程序员,不是C/C++程序员。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
30 [报告]
发表于 2005-01-09 16:42 |只看该作者

关于“永远的UNIX”主页上的一篇文章

reference就会出错。
str1="abcdef\0"
str2="abcd\0"

当*str1==*str2=='d' && *str1!=0,进入下一个循环
然后str1++, str2++,这个时候*str1==e ,*str2==??(str2==NULL)。
出都出错了,还讨论什么越界。

还有
str1="abcd\0"
str2="abcdef\0"
作完了*str1=='d'的运算后,直接就*str1,还是reference一个NULL指针。不越界也出错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP