[求助]DOS程序遇到死机的难题-->feng1256转移
程序环境:
编译器:borlandC 3.1
操作系统:Dos(6.22和7.1上都试验过)
硬件平台:PC104(用于嵌入式系统的x86平台)
1)程序比较大,编译完后文件有670k左右,载入内存中有450K左右,通过mem程序察看主程序载入内存后内存还剩100多K(这里所说的都是常规内存)。
2)程序编译采用的编译模式是Huge(由于数据量和代码量都超过64K,所以必须用huge模式),所有的数据都是通过静态申请,即没有用动态函数malloc之类,所以不应该有变量无效导致的错误
3)发现程序出现死机,程序在完成初始化后,如果没有手动退出,则理论上总是在一个主流程中循环,可以看到程序出现死机的时机并不是固定不变的,相同测试条件下出现死机的时间有长有短。
4)后来我跟踪,发现系统是调用kbhit()时候出错,程序就跑飞了。.我的分析是会不会我在进行数组操作的时候出现错误,于是在每个数据操作前都加assert,保证数组不会越界,可是并没有给我相关的信息。
那么其他还可能有什么问题,导致我的程序影响到系统呢?希望有熟悉DOS系统和C编程的高手给出指点。由于程序比较大,又没有定位到某个文件中,所以无法给出源代码分析(我估计也没有人分析得过来)
先谢谢热心人了