`

堆空间,近堆和远堆

阅读更多
near 和 far指针
        如果动态创建的数据量比较大,用一个数据段(一般是64K,此时段指针不变,偏移量指针在16bit内变化)放不下的时候,需要重新开辟一个数据段供存放更多的数据,此时称原来的堆部分为近堆,改变段地址后的新的数据段所在的堆部分称为远堆。

        PC机的存储器地址是由段地址和偏移地址组合而成,每一段不能超过64k字节地址,因而统一个段内的地址存取,即段内寻址,用偏移地址就可以实现,所以段地址寄存器所存的段地址是不变。当用指针时,只16位即4个字节就够了,这一类就是near指针。当要在另一个段内取数据,就要跨段,即要指明存取段的段地址和偏移地址,这时段地址寄存器所存段地址要改变,在使用指针指向另一个段内地址时,就要用32位表示,就是far指针了。

        由于dos是16位的操作系统,故程序代码受到segment的限制,near指针最多只能指向64k以内的代码或数据。而far指针则可以跨段寻址,还有huge类型的远指针。但是由于watcom,djgpp等dos下的编译器,以及所有windows下的编译器都是32位的,没有 64k的限制,指针也就不分远近了。
分享到:
评论

相关推荐

    matlab在一个坐标系内让二维图片堆叠形成三维空间的表示

    二维数据或者图片堆叠在三维空间的表示,图片堆叠方便查看 类似origin里面的瀑布图的方法,只是这是在matlab里面实现。 matlab多张图片同时在三维空间中显示,沿着某一个坐标轴 matlab在一个坐标系画不同三维图综合...

    金属晶体四种堆积模型空间利用率计算方法.pdf

    金属晶体四种堆积模型空间利用率计算方法.pdf金属晶体四种堆积模型空间利用率计算方法.pdf金属晶体四种堆积模型空间利用率计算方法.pdf金属晶体四种堆积模型空间利用率计算方法.pdf金属晶体四种堆积模型空间利用率...

    堆取料机空间防碰撞系统设计与实现

    本文设计了一种堆取料机空间防碰撞控制系统,其原理是在堆取料机上的大臂和回转中心安装GPS流动站。通过GPS的位置信息和空间几何算法,得出2台堆取料机之间的最小距离,从而可以判断出堆取料机发生碰撞的可能性,使得...

    堆内存分配

    在进程私有的内存里分配,又有两种分配情况,一种上基于栈式的内存分配,另一种是基于堆内存的分配。在c++里使用堆内存分配是使用HeapAlloc函数来实现的,也就是实现new操作符分配内存时会调这个函数。

    C,C++内存分配的详细讲解包括堆,栈,数据段等

    C,C++内存分配的详细讲解包括堆,栈,数据段的分配管理

    浅析redboot 堆空间使用和flash 空间config 和fis 信息存储布局

    浅析redboot 堆空间使用和flash 空间config 和fis 信息存储布局

    业务口堆叠配置.docx

    它们的不同之处在于:级联的交换机之间可以相距很远(在媒体许可范围内),而一个堆叠单元内的多台交换机之间的距离非常近,一般不超过几米;级联一般采用普通端口,而堆叠一般采用专用的堆叠模块和堆叠电缆

    二维数据或者图片堆叠形成三维空间的表示.zip_matlab_matlab 图像处理_matlab在一个坐标系画不同三维图_ma

    matlab在一个坐标系内让二维图片堆叠形成三维空间的表示 二维数据或者图片堆叠在三维空间的表示,图片堆叠方便查看 类似origin里面的瀑布图的方法,只是这是在matlab里面实现。 matlab多张图片同时在三维空间中显示...

    基于FPGA微型红外热电堆探测器空间应用.pdf

    基于FPGA微型红外热电堆探测器空间应用.pdf

    JAVA中堆和栈的概念

    声明变量是在栈空间开辟了一个位置,实例化之后才会开辟一个堆空间 被赋予空值的话则是将栈空间地址指向一个新的堆空间位置

    java中堆(heap)和堆栈(stack)有什么区别

    "Java 中堆(heap)和堆栈(stack)的区别" Java 中堆(heap)和堆栈(stack)是两个不同的内存区域,分别用于存储不同的数据类型和对象。堆栈(stack)是 Java 中的一种内存区域,用于存储基本类型的变量和对象的...

    Java中堆内存与栈内存分配浅析

    本文分析了Java中堆内存与栈内存分配的异同

    堆叠柱状图按照百分比显示.rar

    echarts的堆叠柱状图,按照百分比显示,且占满整行,全网搜了一下,没有发现所想要的,于是自己写了一个,可能比较麻烦些,如果有需要的可以下载看一下。

    堆内存和栈内存详解 ESP

    3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字...

    C语言中堆空间的生成与释放详解

    堆空间的分配和释放 #include  malloc、calloc、realloc、free malloc void *malloc(size_t size); 功能:在堆中分配 size 字节的连续空间 参数:size_字节数 返回值:成功返回分配空间的首地址,失败返回 ...

    余鼎力:堆的可持久化.pdf

    求包含根节点的第k小连通块的权值,连通块的权值定义为连通块中包含的所有边的权值之和。 使用A* 算法(估价函数为0),维护一个优先队列,优先队列中储存连通块的权值,上一次选的...为了节省空间,使用可持久化可并堆

    吕鑫:最博大精深的C语言视频教程 第20天 【第1堂课】动态内存(堆空间)的使用方法

    1、讲解动态内存(堆空间)的申请和调用方法; 动态内存(堆空间)的使用方法

    堆排序pata.pdf

    由于其较高的效率和较低的空间复杂度,堆排序在实际应用中得到了广泛的应用。 一、堆排序算法原理 堆排序算法的核心思想是利用堆这种数据结构来维护数组的有序性。堆是一种特殊的完全二叉树,其中每个节点的值都...

    5步避免Java堆空间错误

    牢记以下五个步骤可以为你减少很多头痛的问题并且避免Java堆空间错误。  通过计算预期的内存消耗。  检查JVM是否有足够的可用空间。  检查JVM的设置是否正确。  限制节点使用交换空间和内存分页。  设置...

Global site tag (gtag.js) - Google Analytics