免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
51 [报告]
发表于 2005-01-10 15:06 |只看该作者

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

num1 & 0xff000000 && num1 & 0x00ff0000 && num1 & 0x0000ff00 && num1 & 0x000000ff是判断num1的四个字节(所以不敢用int型)中有没有等于0的,只要有一个字节为0循环就结束,然后用后面的while循环来判断结果的正确性,所以while最多循环3次
关于溢出的问题我已经说了,只要是内存对齐的就没有关系
另外对于零头内存(不知道怎么称呼,就是内存地址最后一位不是0的那种)读一下不写应该没关系吧?最后一位为0的内存非法引用可能会跑到别的段去,所以读也是不安全的(这个不是很清楚,哪位指正一下)。

论坛徽章:
0
52 [报告]
发表于 2005-01-10 15:26 |只看该作者

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

刚才看代码看走眼了 赫赫
你的num1是先做num1 = *(long *)str1这个操作的,这样却是就不会冲过'\0'了 抱歉 抱歉:)

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

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

原帖由 "yuxh" 发表:
用strcmp的速度是我的2倍,我的是原文的3倍,strcmp就是原文的6倍
6倍之差也叫一丁点么?

yuxh把用的strcmp的代码也贴出来好 吗?
我这里用的strcmp仍然是一个字节一个字节比较的,应该不会比你的程序快两倍吧?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
54 [报告]
发表于 2005-01-10 19:48 |只看该作者

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

我这里没有strcmp的源代码,但用strcmp测试过
同样的数据,结果
real    0m0.55s
user    0m0.55s
sys     0m0.00s

还看了一下,发现我程序里的register没起作用,可能就是这个原因使我的程序慢了一倍

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

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

对不起,我回帖的时候,是从主页面打开的,没看见后面有那么多的内容。

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

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

strcmp用了专门的机器指令支持吧.

论坛徽章:
0
57 [报告]
发表于 2005-01-11 17:26 |只看该作者

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

stdio.h中定义

#ifndef NULL
#define NULL    0
#endif
这个返回值我觉得没有问题。。

另:
str1++;
str2++;

当两个字符串完全相同的时候,
str1 和str2两个指针同样会向后移一位,这是一个未知的指针,会造成不安全的访问。。导致core dump


  1. while((*str1==*str2)&&(*str1!='\0'))
  2. {
  3. str1++;
  4. str2++;
  5. }
复制代码


这样的访问是
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP