本人几个月前就遇到过的问题.现在到了非要解决不可的地步.
去年,年未的时侯就开始编一个文本编辑器,用TC2.0作编译器.
开头以为这样的程序很简单,但在编写的过程中,出现了一些让我感到要放弃的问题.
第一个大问题就是,当我编写到大约5000行左右,就发现TC2.0也编译不了,总是说out of memory...
因为一个文件长度大约只能是64KB,我就把文件大的分散到几个文件,然后用#include""把它们包含起来,
这个时侯就不出现这样的问题了.
不过多久,当我代码编写到8000左右的时侯,又出现了这样的问题,
我又把文件大的分散到几个文件,这样做了.结果不顶用,我就郁闷了.为什么会出现这样的问题.
为了找到原因,我又把TC2.0的菜单功能全部用金山词霸翻译出来.结果发现,就是编译的模块大的原因.
我就把编译模块改成巨大的.这个时侯,out of memory...不出现了.
但是,好景不长,当我把代码编写到10000行左右,
又出现了这样的问题.这个时侯,我蒙了.怎么又出现这样的问题.我把前面的所能做的方法全部把试了.有时有用,
但再多编写几十行的代码编译一下,又出现了out of memory... .我跑到图书馆里,希望能找到一点资料,翻了许多书.
结果还是不能解决问题,回寝室在网上找,也没有找.吃饭的时侯在想,走路的时侯也在想,上课时不时地也在想.
睡觉的时侯,当然是想问题就好的时侯(每当我遇到不解的地方,常常会去睡觉,睡觉前思考遇到的问题,有时会突发奇想找到解决问题的方法.在此,我建议,当坐在电脑前想不出问题,换个地方想问题可能会突发奇想.).躺在床上想,有时想到天亮,还是想不出来.
要知道我这个人是不轻意去问别人的.除非实在没办法想不出来.我这个人有一个习惯,来判断这个问题我不能解决.那就是时间来横量,就是至少我想这个问题的时间跨度不少于15天.
但那个out of memory...的问题想了几个星期,还是想不出.发到论坛上,还是没有人愿分享.
结果,我就跑到学院里,找到大一教我C语言的老师那里,问个明白.向他说明情况后,他给了我一些建议.
其中最重要的就是:链接. 我突然明白了.我的问题所在.我谢过老师之后,立刻跑回寝室,生怕忘了我的解决方法:
因为我的程序是用#include""把全部文件串到一起编译成一个模块.这样会造成模块很大而导致编译器无法编译.
我就这么想能不能不把全部文件编译成一个模块而是几个模块.这时,我就想到了TC2.O的工程菜单.然后,我就把一些文件编译成独立的模块,再通过LINK把独立的模块LINK起来.成功了.
这是我编写这个程序遇到的第一大个问题,之前和之后还遇到了不少的问题,都被我一一解决了.
大约过了一二个月的时侯.就是程序全面功能完善的时侯,让我感到措手不及的是程序申请不到空间.
这也是我编写这个程序遇到的第二个大问题:
在Complie中的Get info可以得知可用存储器空间是265KB.而我的可执行文件的大小就是190KB再加上十多个文件产生的页面碎片.还加上5KB左右的全局变量.如果文本编辑器要写出200行的字符,还需要100KB的存储器空间,还后来的加入了汉字显示的功能,一个HZK16的汉字库大小261KB,要打开这个汉字库就需要再加上261KB的存储器空间.
总的加起来大约要用的存储器空间:470KB(而且只能写一百行的字符),但TC2.0的存储器空间只有265KB.
这个问题我快想了一个月.还没想到解决之道.希望各位大哥大姐们能给一些建议.
本人不甚感激.
[此贴子已经被作者于2007-6-13 1:39:50编辑过]