论坛: 编程破解 标题: 关于TC在纯DOS下显示OUTOFMEMORY的问题,急 复制本贴地址    
作者: 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号