内存结构
来源:互联网 发布:淘宝身份认证失败 编辑:程序博客网 时间:2024/05/16 23:37
想要真正了解编程,对内存的结构认识是必不可少的,这类文章在网上很多了,而且都是限定死的,也就不再赘述,发出来方便大家及自己比对查看。
BSS段: BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。
数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。通常我们常说的全局数据区(静态数据区)就存在于数据段。
在进程的整个生命周期中,数据段和BSS段内的数据是跟整个进程同生共死的,也就是在进程结束之后这些数据才会寿终就寝。
代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。代码段是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack):栈又称堆栈,它是一种运算受限的线性表。是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,删除后,其相邻的元素成为新的栈顶元素(先进后出)。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。
堆栈是一块连续的内存空间,栈空间从高地址向低地址增加,堆空间从低地址向高地址增加
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构
- 内存结构-堆结构-内存分配函数
- Oracle物理结构、逻辑结构、内存结构
- Oracle物理结构、逻辑结构、内存结构
- Oracle物理结构、逻辑结构、内存结构
- windows内存结构
- Unity入门·(二)打砖块(II)
- 深入理解Java:注解(Annotation)基本概念
- html和css月度总结
- FMDB多值查询
- Ubuntu 16.04 安装有道词典
- 内存结构
- HDU 4734 F(x) 【数位DP】
- Android和HTML5混合开发
- JSP中使用正则表达式之match 方法
- ACM深度搜索整理1
- NOJ 1042 电子老鼠闯迷宫
- Ubuntu tomcat8 启动脚本(最简化)
- Linux下Oracle11G64位安装流程
- Canada Cup 2016