1、静态存储区 静态存储区分为三类:只读数据区(RO Data)、已初始化读写数据区(RW Data)、未初始化读写读写数据区(BSS)。这三类存储区都是在程序的编译-连接阶段确定的,且运行过程中是不会变化的,只有当程序退出的时候,静态存储区的内存才会被系统回收。 2、动态存储区 动态存储区主要分为两类:一类是栈(Sta...
3. 栈: 栈存放的是程序中的局部变量,当然函数形参、返回值也都存储在栈中。栈是由系统自动管理,变量的出栈入栈操作都由系统通过移动栈顶指针来完成来完成,并不是真正的清除变量,所以当我们使用局部变量之前一定要给它赋值,否则就是一个不确定的值。 4.堆: 堆空间解决了自动分配不灵活,对内存造成浪费等问题。...
也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存在这个区域 bss段:已经定义但没赋初值的全局变量和静态变量存放在这个区域。 两者之间区别是:代码段,数据段,堆栈段是cpu级别的概念,五大分区属于语言级别的概念,两者是不同的概念。 三、可执行程序内存空间与逻辑地址空间的...
1. 常量区 数值常量、字符常量、字符串常量、符号常量 2. 代码区 代码的2进制指令 3. 栈区auto 形参 局部变量:函数作用域或者语句块作用域内定义的变量 全局变量:文件作用域内定义的变量 4. 静态区/全局区 普通全局变量、静态全局变量、静态局部变量 5. 堆区 程序员可以自己申请的空间。(如malloc动态申请的空...
重学C语言——数据类型及其所占的存储空间 数据类型 在第一个程序中,有这样一条语句:int main(){},此时,我们已经知道这是C语言中不可缺少的主函数。我们也了解到了int是最常见的一种数据类型,那么它叫什么名字呢?下面我们就来认识一些常用的数据类型。
C语言程序需要载入内存才可以运行,其不同的数据保存在不同的区域。所使用的内存可以分成两类:一类是静态存储区,另一类是动态存储区。 C语言程序的存储区如下图所示: 1、静态存储区 静态存储区分为三类:只读数据区(RO Data)、已初始化读写数据区(RW Data)、未初始化读写读写数据区(BSS)。这三类存储区都是在...
因为计算机不会直接从辅助存储器(secondary storage)访问程序指令,因为与RAM相比,辅助存储器的访问时间更长.RAM读取速度比辅助存储器快,但是存储容量有限,所以程序员有必要有效地利用这个有限的存储空间.了解关于C的内存布局对于程序员是很有帮助的,因为它可以决定程序执行时内存的使用量. ...
对输出各段的更详细的说明&C程序的存储空间布局: 1.text段(正文段/代码段),这是由CPU执行的机器指令部分,通常是可共享的,所以即使是频繁执行的程序(如文本编辑器、C编译器和shell等)在存储器中也只需要有一个副本。通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内...
栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,但自由性差,最大空间不大。 栈区是先进后出原则,即先进去的被堵在屋里的最里面,后进去的在门口,释放的时候门口的先出去。 存放内容 临时创建的局部变量和const定义的局部变量存放在栈区。
首先先要介绍一下C语言中一些常见的存储单元 bit 存放一个二进制位 Byte 1Byte = 8 bit KB 1KB = 1024 Byte MB 1MB = 1024 KB GB 1GB = 1024 MB TB 1TB = 1024 GB PB 1PB = 1024 TB 一个内存单元的大小占一个字节(Byte)。内存单元是一片连续的空间,对其的编号也是连续的。