posts - 3,comments - 3,trackbacks - 0
     编译模式模式有时也叫做寻址模式或内存模式,它处理的就是如何在内存中为程序、数据、堆栈分配空间并存取它们。
     
      微模式(tiny):微模式下整个程序只有一个段,这个段包含码、静态和全局数据、堆栈和堆。因为只有一个段,在执行时DOS将把寄存器CS、DS、SS设置为相等,全都指向这个段。在这个段内,码首先装入,地址最低,接着是静态变量和全局变量。然后是堆,最后是堆栈。堆栈和堆都是动态的,对从低地址往高地址增长,堆栈从高地址往低地址增长,若两者相等,则表示空间耗完了。

    小模式:小模式是最常用的模式,小模式和微模式一样都是小数据和小程序,但是它的码和数据/堆栈/堆段是分开的,所以CS不等于DS和SS。其次,除了和数据/堆栈共用一个段的堆外,还有一个远堆。

    中模式:在数据、堆栈、堆的分配方面,中模式和小模式是一样的,差别在于码段的分配,中模式下,来自不同源文件的码模块放在不同的码段内。严格的讲,同一个源文件内的各函数也是放在不同的码段的。

    紧凑模式:紧凑模式在概念上是最简单的。码、静态数据、堆栈、堆各有自己的段。堆只有远堆,没有近堆。

    大模式:在静态数据、堆栈、堆的分配方面,大模式等同于紧凑模式,在码的分配方面,大模式等同于中模式。无论在数据指针还是函数指针,一律都是远指针。和紧凑模式一样,静态数据的总量不能超过64K。

    巨模式:巨模式取消了静态数据的总量不能超过64K的的限制,来自不同源文件的码放在不同的段内,来自不同源文件的静态数据也放在不同的段内,只有堆栈是合在一起的。
posted on 2008-02-11 11:57 alec的工作室 阅读(592) 评论(1)  编辑  收藏

FeedBack:
# re: Turbo C 的六种编译模式
2008-07-22 15:12 | liguanyao
请问一下这六种编译模式如何设置啊?
我写了一个C源程序,大概600多行,编译没有问题,可是运行起来之后就有时候会自动退出,退出是随时的,有时不退出,我怀疑是内存不足的原因,所以请教一下如何用大内存编译。谢谢!!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: