编程语言之存储结构篇
来源:互联网 发布:ovid数据库检索方式 编辑:程序博客网 时间:2024/06/05 15:42
首先来看下存储结构有哪些:
- 栈
- 堆
- 静态区
- 文字常量区
代码段
栈: 由OS自动分配和释放,并速度快。但需要先告诉编译器需要分配的内存大小和生存期,所以不灵活。
- 堆:由程序员决定分配和释放内存,速度慢(相对栈)。因为堆是运行时动态分配内存的,所以写程序会灵活些。
- 静态存储区:在编译时就已经分配好并持续到整个程序结束。全局变量,静态变量会存储在这。
- 文字常量区:程序使用的常量存储在这。程序结束时,由系统释放。
- 代码段:存放二进制代码
我们将程序看成多个函数调用的过程,这些过程必须是高效的所以将数据存放在cpu寄存器是个好办法,但有限的寄存器可能存放不了较大的数据,借助栈来存储局部变量而且push和pop操作很好地避免嵌套函数调用的麻烦,于是函数调用的过程就演变成记录栈指针的过程,每个函数调用都配一个栈指针。所以说栈作用体现于函数调用(局部变量甚至实现多任务的切换)。
我们写交互程序的时候,针对不确定的数据就要存到堆中(动态分配并且空间贼大),然后栈就用指针替代这部分不确定的数据,这里我觉得指针就像占位符。
程序中全局变量和静态变量的存储是放在一块的,即静态存储区,并持续到程序结束。
最后写个小代码进行总结
打算写个编程语言系列,将所接触到的编程语言进行总结并将共性提取出来形成方法论,以便能快速上手新的编程语言。
阅读全文
0 0
- 编程语言之存储结构篇
- c语言之图的存储结构
- C语言编程之存储模型、链接
- C语言实现线性表之顺序存储结构操作
- C语言数据结构-1.线性表之顺序存储结构
- C语言数据结构-2.线性表之链式存储结构
- 3 编程语言结构
- R语言编程结构
- mongodb系列之存储结构篇
- 队列复习篇之顺序存储结构
- 队列复习篇之链式存储结构
- oracle之-存储结构
- Redis之存储结构
- 树之存储结构
- 数据结构之存储结构
- 数据结构之存储结构
- R语言编程结构-循环结构
- 线性表之顺序存储结构(C语言动态数组实现)
- [RK3288][Android6.0] PWM backlight 驱动流程小结
- MongoPipeline,ImagePipeline,CsvPipeline,JsonPipeline,XmlWritePipeline
- 君生我未生!Stata
- 堆(heap)
- synchronized和lock的区别和使用
- 编程语言之存储结构篇
- 【JavaScript】原生JS实现多条件筛选
- 强化学习基本概念
- 人工智能 无人驾驶的第一本书推荐
- android 中的多线程使用
- HTTP基础指南(图解http总结)
- 观察者设计模式
- jaxb实现XML与JavaBean的互相转换遇到的难点(一)
- 5.2.6 操作方法