
这是16位DOS程序的通病,由于DOS是单进程的 *** 作系统,一个进程(即程序)要占用全部的CPU,而TC是属于DOS程序,所以
用大模式(Large),并把指针设为far型,这样可以达到1M内存.对于超过的源程序,可以视代码或数据多少将其分解成两个或多个文件,分开后,尽管源码己小于64K,但编译模式还是要选用大模式,这样编译生成的OBJ文件,将会让连接程序把代码和数据安排在不同的段内,这样生成的EXE文件在加载时将告诉系统如何装入.
“Image”就是指编译后的程序文件,在对程序链接时就是程序在内存时的映像,因此这么称呼。
在某些 *** 作系统下,这种程序文件可以直接作为内存映像载入内存。
在其他 *** 作系统中,这些文件的结构比较复杂,不仅仅是内存映像那么简单,可能包含
定位信息、和程序代码有关的外部符号信息等(就像咱们用的MS Windwos)。
Windows95 和 SP3 之前的 WindowsNT 4.0 无法处理超过256MB的可执行文件(就是无法
执行),后续版本可以处理的最大范围约 1.75GB,如果显示的文件大小是负数,表示文
件超过了 2GB,需要用64位的处理器和 *** 作系统或者减小数组大小。
在现在的Windows *** 作系统中,一般可以忽略上述警告,程序可以直接运行而不会出现问
题。
百度来的两个方法,没试。
1)好好利用公共模块modula,数组最好用动态的,用完就释放;
2)把虚拟内存搞大一些就没关系。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)