问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-26 12:49

我来回答

2个回答

热心网友 时间:2022-06-28 09:40

各种存储模式之间有什么区别?
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模式会带来显著的性能损失,因此它很少被使用。
最常使用的存储模式有哪些?
最常使用的存储模式有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()在程序运行时进行动态分配,它们在本质上并不必须是静态的。

热心网友 时间:2022-06-28 09:40

一、auto auto称为自动变量。 局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进7行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上从来不用。 局部变量在函数调用时自动产生, 但不会自动初始化, 随函数调用的结束, 这个变量也就自动消失了, 下次调用此函数时再自动产生, 还要再赋值, 退出时又自动消失。 二、static static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。 1. 静态局部变量 它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它、函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。 2. 静态全程变量 Turbo C2.0允许将大型程序分成若干独立模块文件分别编译, 然后将所有模块的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护。静态全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用,而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。 三、extern extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要被其它文件使用。因此, 必须将全程变量通知每一个程序模块文件, 此时可用extern来说明。 四、register register称为寄存器变量。它只能用于整型和字符型变量。定义符register说明的变量被Turbo C2.0存储在CPU的寄存器中, 而不是象普通的变量那样存储在内存中, 这样可以提高运算速度。但是Turbo C2.0只允许同时定义两个寄存器变量,一旦超过两个, 编译程序会自动地将超过*数目的寄存器变量当作非寄存器变量来处理。因此, 寄存器变量常用在同一变量名频繁出现的地方。另外, 寄存器变量只适用于局部变量和函数的形式参数, 它属于auto型变量,因此, 不能用作全程变量。定义一个整型寄存器变量可写成: register int a;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
13岁一直到18岁晚上经常熬夜会有什么影响 具象表现素描内容简介 ...| 从14世纪文艺复兴到20世纪具象表现绘画 · 168幅画 · 图解西方... 【漫画赏析】比喻具象化——《孤高之人》手法分析 具象美术作品有哪些 具象艺术艺术家介绍 话说 曾经有个演唱会 是初音未来演唱会 39祭 谁知道微信聊天记录删掉了,还能恢复过来吗?有什么软件可以恢复吗?不... 六爻。测缘分。测婚姻 礼仪起源于祭祀的证据是什么? 手机总是显示为存储模式怎么回事 数据存储的模式是什么? 存储模式是什么意思 注册公司所需要哪些证件? 公司注册完之后会拿到哪些证件 注册公司需要什么证件 去工商局注册公司需要带什么证件? 有限责任公司注册需要提交的审批证件有什么 注册公司需要准备的材料? 企业注册相关文件需要哪些 农村人都喜欢吃泡萝卜,怎样泡才能让萝卜变得很脆? CAD2016搭配T20天正V3.0打开时显示超出使用期限是天正还是CAD的原因?怎么解决? 天正建筑哪个版本支持CAD2016 三百米的井水,泡茶有红污垢。能喝吗? cad2016安装完天正t20工具栏就乱码了,怎么办呢 菊花,金银花,枸杞,百合,红枣,能在一起泡茶红 天正电气T20 有支持CAD2016版本的吗?麻烦大神给个天正电气T20的下载链接。 我用净水器的自来水煮熟了泡茶。为什么第二天水就变成红色的了。是怪水质吗?如果怪这样的水还能放心吗? 电脑是W7系统64位,CAD用的是2016,天正用的是T20,但是数字快捷键不能用,怎么回事?有什么解决方法吗 用净水器净化的纯水泡茶会变成深红色,还能喝么,为什么会变色 储存模式是怎么回事啊 储存模式什么意思 怎么打开 手机型号是Lenovo520 手机存储模式怎么解除 vivo手机中存储模式是怎么回事? 简述存储系统的几种模式?(DAS,NAS,SAN) 有华为,超导,8K,工业大麻,超清视频于一身的股票吗? 股市教练app是托吗 为什么消息面不会一直影响股票价格? 股票长还是跌了 家庭ktv点歌机,怎么用u盘加歌? KTV点歌机U盘连接USB插口增加歌曲是不是这样? 歌绅点歌机怎么用u盘加歌自己家的电脑可以下载吗? ktv的U盘功能怎么用 KTV里面有很多都不更新新歌,我想把我想唱的歌放到U盘里,怎么添加到KTV歌曲菜单里 KTV U盘使用方法 KTV是不是可以用U盘 ktv点的歌可以自己带U盘过去点歌嘛? 芹菜根与叶都能食用吗,营养价值有吗? 去年的芹菜根今年在地里长了能吃吗? 芹菜根能吃吗?