-
-
所以弄明白自己程序的局限有多么重要---兼谈IE6的一个缺陷
-
2006-9-8 23:16
4004
-
所以弄明白自己程序的局限有多么重要---兼谈IE6的一个缺陷
编程时很多人,包括我自己,不太注意标注程序的要求和局限性,结果就很容易出错。
这里是刚刚发现的微软的一个问题。在笑话别人的同时,也请问问我们自己:我写程序的时候,会不会也犯同样低级的错误?
去网上下载一个巨大的文件,比如微软的Vista RC1,网址是
http://download.windowsvista.com/preview/rc1/en/download.htm
在“To use your browser”下,选择32或64位的链接。
在下载2.5GB的ISO文件的时候,注意看窗口的标题栏,看到了什么?对了,一个负的百分数,从-1%到负好几百,然后又变成正的好几百,在慢慢递减到接近100%的时候,又变成99%,直到下载结束。至于下面表示进展的progress bar,则完全无用,一会子全满,一会子又是空的,根本就不对。
在XP和2003上都一样,只要你用的是IE6,低版本的就更不用说了。
原因?我估计是程序里用的是带符号的signed INT32,最大值只有0x7FFF FFFF,就是2.2G多一点,所以在下载更大的文件的时候,整数溢出(integer overflow),当然程序里还有一些其它的奇怪的逻辑,我们就不得而知了。
很简单的一件事儿,结果上亿人用的一个软件都会犯这样低级的错误;所以下次你看到我写的程序里有臭虫,就省点儿力气,别拍砖头了。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法