C语言面试常见问题总结--程序的5种内存存储区及示意

本文详细介绍了C语言中的内存分配,包括静态区、栈、堆、字符/文字常量区和代码区,分析了各自的特点、用途和生命周期。重点讲解了全局变量、局部变量、动态内存分配以及常量存储的区别和管理。
摘要由CSDN通过智能技术生成

操作系统中的内存一般分为虚拟内存和物理内存,本文主要讨论的是虚拟内存中的内存分配方式与内存存储区的内容

APUE中的一个典型C内存空间分布图

Linux下32位环境的用户空间内存分布情况

内存分配方式

C/C++主要有以下五种内存存储区:

1)、静态区(全局数据区):存全局变量,静态变量。程序编译时内存已分配好,并存在于程序整个运行期间,程序结束后由系统统一释放

全局变量和静态变量被分配到同一块内存中。  全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(data), 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(BSS,Block Started by Symbol)

2)、:存放函数的参数值,局部变量,函数执行结束时会被自动释放。栈内存分配运算内置于处理器的指令集中,效率高,但是容量有限。由编译器自动分配释放。

3、堆(动态内存分配)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值