|
作者: jake007 [jake007] 论坛用户 | 登录 |
我用无忧的模拟盘进入模拟考试系统 一切基本正常,就是在编译后,连接时出现OUT OF MEMORY的错误提示 我的CONFIG.SYS文件如下: DEVICE= C:\WINDOWS\HIMEM.SYS DEVICE=C:\WINDOWS\EMM386.EXE RAM DOS=HIGH,UMB FILES=64 BUFFERS=16 谁能帮帮我啊,急! |
地主 发表时间: 08/09 20:31 |
回复: ricky [ricky] 版主 | 登录 |
看看你的数组是不是开得太大了 |
B1层 发表时间: 08/11 08:39 |
回复: 286 [unique] 版主 | 登录 |
出现这个问题极大可能是你所需内存超过了常规内存640K的限制. |
B2层 发表时间: 08/11 12:56 |
回复: jake007 [jake007] 论坛用户 | 登录 |
我的常规内存至少有260K没有用到(程序最多要106K)。高端内存有75K,一般占用74K。不过好象不关他的事。我要挂模拟系统、TX(特显,模拟系统要求)和UCDOS,还要进TC。实际使用中如果退出模拟系统可以正常编译连结。问题仍然没有解决! |
B3层 发表时间: 08/11 20:54 |
回复: jake007 [jake007] 论坛用户 | 登录 |
数组的值是根据某个介绍来调整的,应该不会有问题的。 |
B4层 发表时间: 08/11 21:09 |
回复: 286 [unique] 版主 | 登录 |
程序最多要106K你是怎么得到的?如果这个值是该文件的大小那就大错特错了。 一般一个程序运行时要装入内存中,这要占去一部分内存。然后程序本身还要再动态申请一部分内存,所以一般会这这个值大。 高端内存和扩展内存以及扩展内存一般需要软件本身的支持,所以虽然你有,但不一定有用。 实际使用中如果退出模拟系统可以正常编译连结。说明你说的现在完全是因为常规内存不够。UCDOS和TX好象有可装入到高端内存的参数。你可以试试。 把“DEVICE=C:\WINDOWS\EMM386.EXE RAM”这一行去掉,本来内存就少,再让他占去就更好了。 你可以启动后,在没UCDOS和TX情况下编译,编译连接成功后,运行UCDOS和TX,然后直接运行可执行文件。 |
B5层 发表时间: 08/12 09:23 |
回复: jake007 [jake007] 论坛用户 | 登录 |
不行啊,如果没有UCDOS和TX我连模拟系统都进不去啊,也就是说只能做上一次遗留的题,如此进入退出太麻烦了吧。 不过谢谢各位帮忙啊! [此贴被 菜鸟在飞(jake007) 在 08月13日21时38分 编辑过] |
B6层 发表时间: 08/13 21:01 |
回复: allyesno [allyesno] 论坛用户 | 登录 |
DEVICE=C:\WINDOWS\EMM386.EXE RAM 这一句改成DEVICE=C:\WINDOWS\EMM386.EXE noems 然后用lh 把ucdos 加载入高端 如果去掉DEVICE=C:\WINDOWS\EMM386.EXE RAM 这一句 那么得到的基本 内存将会更少 一般来讲不会出现OUT OF MEMORY 的情况(当然也有可能有病毒) 你的files用默认的32就可以了 |
B7层 发表时间: 08/14 00:38 |
回复: allyesno [allyesno] 论坛用户 | 登录 |
补充一下 你的autoexec.bat 里的命令最好也都用lh 加载 高端加载完 再用 低端内存 |
B8层 发表时间: 08/14 00:48 |
回复: ricky [ricky] 版主 | 登录 |
如果你的数组大于64KB,要用巨模式编译(好像是这个模式)而且要用远程数组,如果你用指针,要看看有没有溢出的问题 |
B9层 发表时间: 08/14 22:00 |
回复: jake007 [jake007] 论坛用户 | 登录 |
也不行啊,我改成这个样子了: DEVICE=C:\WINDOWS\EMM386.EXE NOEMS HIGHSCAN DEVICE= C:\WINDOWS\HIMEM.SYS DOS=HIGH,UMB FILES=64 BUFFERS=32 后来又改成这个样子了: DEVICE=C:\WINDOWS\EMM386.EXE NOEMS HIGHSCAN I=B000-B7FF DEVICE= C:\WINDOWS\HIMEM.SYS DOS=HIGH,UMB FILES=64 BUFFERS=32 也不行,现在是这个样子的: DEVICE=C:\WINDOWS\EMM386.EXE RAM I=B000-BFFF DEVICE= C:\WINDOWS\HIMEM.SYS DOS=HIGH,UMB FILES=64 BUFFERS=32 结果在开机就提示说加载EMM386失败,我晕哦。 |
B10层 发表时间: 08/15 20:36 |
回复: netsponger [netsponger] 论坛用户 | 登录 |
那是内存碎片的问题啊,如果运行了UCDOS那就先重起UCDOS,还不行的话,就用TCC 编译了如:tcc 文件名.c |
B11层 发表时间: 08/15 22:09 |
回复: allyesno [allyesno] 论坛用户 | 登录 |
晕倒 你的顺序搞反了 要先加载himem.sys 再加载emm386.exe 另外HIGHSCAN参数加上去不稳定 I=B000-B7FF 加上去 简直是在抠内存 正确的顺序 DEVICE= C:\WINDOWS\HIMEM.SYS DEVICE=C:\WINDOWS\EMM386.EXE NOEMS DOS=HIGH,UMB FILES=64 BUFFERS=32 |
B12层 发表时间: 08/16 00:44 |
回复: jake007 [jake007] 论坛用户 | 登录 |
谢谢大家啊!! 问题基本解决了。 非常感谢!!! 解决的方法就是将CONFIG.SYS文件改成楼上的那样。 [此贴被 菜鸟在飞(jake007) 在 08月19日21时16分 编辑过] |
B13层 发表时间: 08/19 21:26 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号