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

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()在程序运行时进行动态分配,它们在本质上并不必须是静态的。

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

时间: 2024-10-10 14:58:29

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

VMWare虚拟机bridged、host-only和NAT网络模式的区别和用法

VMWare提供了三种工作模式,它们是bridged(bridged 模式).NAT( 网络地址转换模式)和host-only(主机模式) . 1  VMWare虚拟机bridged.host-only和NAT网络模式的区别 1.1 bridged(桥接模式) 在bridged 模式下, VMWare 虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在bridged模式下,你需要手工为虚拟系统配置I P 地址.子网掩码, 而且还要和宿主机器处于同一网段, 这样虚拟系

大端模式和小端模式的区别

大端模式和小端模式的区别 在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题.因此就导致了大端存储模式和小端存储模式. 大端模式: 字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端模式: 与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节. 例如,16位宽

MySQL存储引擎的区别

一.mysql中myisam,innodb和memory三个存储引擎的区别 1.区别:1) MyISAM管理非事务表.提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,是默认的存储引擎,除非配置MySQL默认使用另外一个引擎. 2)MEMORY存储引擎提供“内存中”表.MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表.就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中.注释:MEMORY存

6分钟彻底掌握存储和备份区别

摘要:如果不是专业的技术专家,很难搞清楚存储和备份这两者之间区别,特别是云的出现,这两个概念往往容易混在一起,本文将从专业角度详细对比存储和备份两者之间的区别和发展趋势. 一直以来,存储和备份是两个相近的概念,但是又有很大区别的.如果不是专业的技术专家,是比较难搞清楚这两者之间区别,特别是云的出现,这两个概念往往容易混在一起看.本文从几个方面快速对比下存储和备份这两个概念的区别和发展,以及演变趋势. 1. 备份是不能独立数据容器存在,永远构建于存储之上 存储是数据保存容器的统称,比如软盘,光盘,

OTPUB知识课堂:云存储和本地存储之间的区别

1. 本地存储是指将数据存放到本地磁盘.或移动硬盘.U盘.光盘等存储设备上. 通俗来说就是把自己的数据如文档.视频.图片.音乐等,存到到自己的电脑上.或存放到移动硬盘.U盘.光盘上. 2. 云存储是一种新兴的网络存储技术,是指通过集群应用.网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统.是一种新的商业模式,让用户自由选择,按需购买,灵活扩充存储空间大小.比如现在常见的网盘.云盘. 通说来说是就是将自己的

观察者模式与消费者模式的区别

观察者模式与消费者模式的区别 返回目录 再说概念 这两个模式确实有点相似,都为了实现程序的解耦产生的,观察者一般又称发布/订阅模式,它一般是有一个主题对象,然后有多个订阅者去关注它,当它的状态发生变化时,会自动通知这些订阅者:而消费者模式类似一个缓存队列的概念,它也称为生产者/消费者模式,生产者只负责生产数据不去做处理(缓解高并发的问题),而消费者只从消费中间件里拿到所要处理的数据,并进行相应的逻辑处理工作,生产者与消费者是相互不知道对方的存在的,或者说他们可以是不同平台的,不同语言的,即解耦的

说说设计模式~ 观察者模式与消费者模式的区别

返回目录 再说概念 这两个模式确实有点相似,都为了实现程序的解耦产生的,观察者一般又称发布/订阅模式,它一般是有一个主题对象,然后有多个订阅者去关注它,当它的状态发生变化时,会自动通知这些订阅者:而消费者模式类似一个缓存队列的概念,它也称为生产者/消费者模式,生产者只负责生产数据不去做处理(缓解高并发的问题),而消费者只从消费中间件里拿到所要处理的数据,并进行相应的逻辑处理工作,生产者与消费者是相互不知道对方的存在的,或者说他们可以是不同平台的,不同语言的,即解耦的! 图像中的消费者模式 图像中

android 手机网络接入点名称及WAP、NET模式的区别

移动 电信 联通 APN cmwap cmnet ctwap ctnet 3gwap uniwap 3gnet uninet设置 APN(Access Point Name),即“接入点名称”,用来标识GPRS的业务种类,目前分为两大类:CMWAP(通过GPRS访问WAP业务).CMNET(除了WAP以外的服务目前都用CMNET,比如连接因特网等). 中国移动APN: cmwap (2G) cmnet (3G)中国电信APN: ctwap (2G) ctnet (3G)中国联通APN: uniw

C语言面试篇1:判断数据大小端存储

一.前言 本节,我们将学习C语言库中数据存储方式,并通过编写代码确定当前系统的数据存储方式. 二.简介 1.大端模式 大端模式是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中. 2.小端模式 小端模式是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中. 3.为什么会有大小端之分? 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit.但是在C语言中除了8bit的char之外,还有