回 帖 发 新 帖 刷新版面

主题:[讨论]关于字符变量占用内存的问题

QB本身好像是可以搬到扩展内存去用的
但具体的我不太懂,最主要是我看不懂HELP里的说明

但程序使用的内存只能在基本内存里运转
一些变量数组和字符串都只能在640K里面打圈

所以当你的程序比较大,
利用的变量或数组多起来的时候
内存就容易溢出了

如果有虚拟磁盘驱动的话,
在虚拟盘上建立数据文件,
以保存中间变量,是一个比较好的办法,
甚至不再利用数组了,
直接操作虚拟文件就可以了,
一是速度不会差太远
二是容量扩大了

我因为要用到比较长的字符串
多重调用了几个子程(函数)后
发觉经常出现内存溢出
用fre("")查看发觉的确字符空间不够
最后我把一些不再需要的中间变量(针对不定长字符串而言,其他变量没有这个问题)置空后
内存空间又回来了

也就是说,
在子过程(或函数)中, (主模块好像少见这种现象)
没有再利用价值的占用空间比较多的不定长字符串变量
最好把它置空(退出过程或函数也会自动置空的,但反应比较迟钝)

回复列表 (共4个回复)

沙发

这么耗内存?

板凳

对。。。
我想,组合语言+QB是不是无所不能

3 楼

"在虚拟盘上建立数据文件,以保存中间变量,是一个比较好的办法,甚至不再利用数组了,直接操作虚拟文件就可以了,一是速度不会差太远;二是容量扩大了."

楼主的这个想法我觉得可行。
虚拟盘的建立是很方便的,比如要把E:\books\设置为A:\,可以这样:
(在DOS下)
subst a: e:\books

subst s: e:\books
则是把e:\books设置为s:盘

4 楼

喔?
不是这样的吧?

我用的是DOS 6.22
虚拟磁盘用的是SRDISK
MS启动工具盘上也有的,具体名称我不记得了,好像也是 SmartDisk 什么的

虚拟盘的意思是
从扩展内存中(DOS管理的1M =低位内存640K+高位内存360K 以外的内存)
取出一块空间
用来模拟一个磁盘驱动器,
你在这个虚拟盘上的一切操作,和在普通的驱动器上操作都是一样的
只是实际数据并没有保存到真正的磁盘上去
而是暂存在内存空间了 (断电就没了)

这样子对文件的操作就已经不再局限于磁盘的运转速度读写速度了
已经变成了对内存的读写操作了,速度当然快得多了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册