百科狗-知识改变命运!
--

C语言各种存储模式的区别?最常用的存储模式有哪些?

梵高1年前 (2023-12-05)阅读数 17#综合百科
文章标签模式程序

各种存储模式之间有什么区别?

DOS用一种段地址结构来编址计算机的内存,每一个物理内存位置都有一个可通过段地址一偏移量的方式来访问的相关地址。为了支持这种段地址结构,大多数C编译程序都允许你用以下6种存储模式来创建程序:

-----------------------------------------------------------------------

存储模式 限制 所用指针

-----------------------------------------------------------------------

Tiny(微) 代码、数据和栈一64KB Near

Small(小) 代码一64KB Near

数据和栈一64KB Near

Medium(中) 代码一1MB Far

数据和栈一64KB Near

Compact(紧缩) 代码一64KB Near

数据和栈一1MB Far

Large(大) 代码一1MB Far

数据和栈一1MB Far

Huge*(巨) 代码一1MB Far

数据和栈一1MB Far

-----------------------------------------------------------------------

*注意:在Huge存储模式下,静态数据(如数组)可以超过64KB,这在其它存储模式下都不行。

Tiny存储模式的限制很严(所有的代码、数据和栈都被限制在64KB中),它通常用来生成"COM"文件。由于内存地址的“安排”方式的限制,Huge模式会带来显著的性能损失,因此它很少被使用。

最常使用的存储模式有哪些?

C语言各种存储模式的区别?最常用的存储模式有哪些?

最常使用的存储模式有Small,Medium和Large这几种。Tiny存储模式一般只用来生成".COM"文件,在现在的高性能计算机上,它已很少被使用了。Compact存储模式允许程序有很少的代码和大量的数据,在今天的商业应用环境中,它同样也不常用了。由于Huge存储模式的存储地址机制导致它的效率较低,所以它也很少被使用。

一般说来,你应该根据程序的大小选用Small,Medium或Large中的一种存储模式。对一个小的实用程序来说,Small存储模式可能是最合适的,这种存储模式允许有64KB的代码和64KB数据和栈。如果程序有更大一些的数据要求,你可以使用Medium存储模式,它允许程序有多达1MB的可寻址数据空间。对于更大的程序,你应该使用Large存储模式,它允许程序有1MB的代码和1MB的数据和栈空间。

如果你在编写一个Windows程序或者在使用一个32位编译程序,那么你最好使用Small存储模式,因为这样的环境并不受DOS程序的段地址结构的限制。

应该使用哪种存储模式?

如果要生成一个“.COM”文件,匦胧褂肨iny存储模式,即所有的代码、数据和栈空间都被限制在64KB中。小的实用程序普遍使用这种存储模式。相对较小的程序也可以使用Small存储模式,只不过不必把整个程序都限制在64KB中。在Small存储模式下,有64KB的代码空间和64KB的数据和栈空间。除了用于小程序外,Small存储模式还可用在Windows或32位编译程序这样的环境中,因为在这些环境中内存寻址并不受DOS中16位的限制。

如果一个程序的代码量相对较大而静态数据量相对较小,你可以用Medium存储模式来创建程序。如果程序很大(需要很多模块,大量的代码和数据),那么你应该选用Large存储模式,这种存储模式常用在DOS下编写商用软件。

与Small,Medium和Large存储模式相比,Compact和Huge存储模式要少用得多。Cornpact存储模式允许程序有大量的静态数据和相对较少(64KB或更少)的代码。满足这种模式的程序很少,常常是一些转移程序,它们有大量必须存到内存中的静态转移表。Huge存储模式与Large存储模式基本相同,只是Huge存储模式允许程序有超过64KB的静态数据。与Compact存储模式相似,Huge存储模式也很少被使用,这主要是因为它会带来显著的性能损失。由于Huge存储模式的执行效率较低,因此你应该避免使用这种模式,除非你确实需要超过64KB的一个数组或其它静态数据。记住,数组和其它程序结构可通过malloc()和calloc()在程序运行时进行动态分配,它们在本质上并不必须是静态的。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)