编程语言之存储结构篇

来源:互联网 发布:ovid数据库检索方式 编辑:程序博客网 时间:2024/06/05 15:42

首先来看下存储结构有哪些:

  • 静态区
  • 文字常量区
  • 代码段


  • 栈: 由OS自动分配和释放,并速度快。但需要先告诉编译器需要分配的内存大小和生存期,所以不灵活。

  • 堆:由程序员决定分配和释放内存,速度慢(相对栈)。因为堆是运行时动态分配内存的,所以写程序会灵活些。
  • 静态存储区:在编译时就已经分配好并持续到整个程序结束。全局变量,静态变量会存储在这。
  • 文字常量区:程序使用的常量存储在这。程序结束时,由系统释放。
  • 代码段:存放二进制代码

  我们将程序看成多个函数调用的过程,这些过程必须是高效的所以将数据存放在cpu寄存器是个好办法,但有限的寄存器可能存放不了较大的数据,借助栈来存储局部变量而且push和pop操作很好地避免嵌套函数调用的麻烦,于是函数调用的过程就演变成记录栈指针的过程,每个函数调用都配一个栈指针。所以说栈作用体现于函数调用(局部变量甚至实现多任务的切换)。
  我们写交互程序的时候,针对不确定的数据就要存到堆中(动态分配并且空间贼大),然后栈就用指针替代这部分不确定的数据,这里我觉得指针就像占位符。
  程序中全局变量和静态变量的存储是放在一块的,即静态存储区,并持续到程序结束。


最后写个小代码进行总结

这里写图片描述

 打算写个编程语言系列,将所接触到的编程语言进行总结并将共性提取出来形成方法论,以便能快速上手新的编程语言。