zoukankan      html  css  js  c++  java
  • 内存分区

    内存数据的分区情况大概是如下这样子的:

    • 动态存储区

      • 1.栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。
      • 2.堆区(heap) :一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事, 分配方式类似于链表
    • 静态存储区(全局区 : static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。

      • 1.已初始化读写数据段(RW data ):已初始化数据是在程序中声明,并且具有初值的变量,这些变量需要占用存储器的空间,在程序执行时它们需要位于可读写的内存区域内,并具有初值,以供程序运行时读写。
      • 2. 未初始化数据段(BSS):未初始化数据是在程序中声明,但是没有初始化的变量,这些变量在程序运行之前不需要占用存储器的空间。 Block Started by Symbol,BSS段的变量只有名称和大小却没有值
      • 3.文字常量区(只读数据段:RO data):只读数据段是程序使用的一些不会被更改的数据,使用这些数据的方式类似查表式的操作,由于这些变量不需要更改,因此只需要放置在只读存储器中即可。通常字符串常量就是放置在这里,程序结束后由系统释放
      • 4.程序代码区:存放二进制代码。

    其中,数据段自然包含了三种(BSS,RW Data,RO Data),写过汇编的一定知道 *_*

  • 相关阅读:
    [分享]一个天气预报的WebService应用实例
    XMLHttpRequest Ajax 实例简介
    CSS选择符
    MSDN SmartCast更改下载步骤
    发掘VS2005 SP1 (二) 更好的支持主题
    .Net+MySQL组合开发(二) 数据访问篇
    最近一打开cnblogs首页,就弹出电影网站!
    今天有点爽
    .Net+MySQL组合开发(三) 乱码篇
    发掘VS2005 SP1 (三) 母模页
  • 原文地址:https://www.cnblogs.com/Tattoo-Welkin/p/10335252.html
Copyright © 2011-2022 走看看