-
-
所以弄明白自己程序的局限有多么重要---兼谈IE6的一个缺陷
-
-
所以弄明白自己程序的局限有多么重要---兼谈IE6的一个缺陷
编程时很多人,包括我自己,不太注意标注程序的要求和局限性,结果就很容易出错。
这里是刚刚发现的微软的一个问题。在笑话别人的同时,也请问问我们自己:我写程序的时候,会不会也犯同样低级的错误?
去网上下载一个巨大的文件,比如微软的Vista RC1,网址是
67dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3c8G2N6$3&6D9L8$3q4V1i4K6u0W2N6$3W2F1k6r3!0%4M7%4k6A6M7%4c8S2i4K6u0W2j5$3!0E0i4K6u0r3M7s2u0W2N6X3W2W2N6#2)9J5c8Y4u0U0x3g2)9J5c8X3g2F1i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3X3g2Z5N6r3@1`.
在“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),当然程序里还有一些其它的奇怪的逻辑,我们就不得而知了。
很简单的一件事儿,结果上亿人用的一个软件都会犯这样低级的错误;所以下次你看到我写的程序里有臭虫,就省点儿力气,别拍砖头了。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课