出处吾爱!
楚汉棋缘是一款棋力强大的中国象棋软件,虽然棋力早已赶不上现在的旋风、名手,不过作为一代经典软件也是值得收藏的,毕竟与人对战的话棋力还算蛮高的
不过软件已经快十年没更新了,对于64位系统,内存大于4GB时可能会出现bug,提示:“程序有误,请写信告诉我该错误详细发生情况,谢谢”。
初步猜测可能是程序分配置换表的时候根据系统内存大小来分配的,当内存大于4GB时,由于int型变量的最大寻址范围就是4GB所以导致溢出,
我决定自己修复一下这个BUG
用OD下断点bp GlobalMemoryStatus,断下:
F8单步一次,这个函数将系统内存信息保存在edx所指区域中:
从上图可以看到他得到了4GB的剩余内存,对于一个32位程序来说,这个数字太大了。
下一步软件就把内存信息送到EAX寄存器中准备分配内存,于是出现了错误。
我们改一下下面这条语句即可,把内存值设死成512MB:
OK,保存,运行测试,果然bug没有了,不过置换表不会超过512MB了,没有关系,512MB足够了。
另外补充一句,如果你的电脑运行原版没有问题的话,那么无需使用修复版,如果原版运行出错的话请使用修复版:
下载地址:
http://pan.baidu.com/s/1dDIUyZ3 (内附注册码)