内存管理与存储类型

本文详细介绍了内存的几个主要区域:代码区、数据区、BSS区和堆栈区,以及它们各自的作用和特点。同时,阐述了自动(auto)、寄存器(register)和静态(static)三种存储类型在程序中的不同行为。通过理解这些基础知识,有助于提升程序设计和内存管理的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存管理:

代码区:储存编译后函数体的二进制代码,以及字符串常量,该区域是只读的。

如:char *p="1234";  //"1234"存在代码区。

数据区:存储初始化的全局变量、静态变量、一般常量。

BSS区:存储未初始化的全局变量、静态变量。BSS段的特点就是变量会被初始化为0。

堆区:由程序员手动开辟、释放。开辟空间:malloc():返回值是一个void类型的指针,不能初始化所分配的内存空间。calloc():可以初始化所分配的内存空间。释放空间:free()。

栈区:由系统自动分配、释放。存放函数的参数值、局部变量等。

注:堆区和栈区的内存是在程序执行时由系统分配的。BSS区、数据区和代码区是在程序执行开始阶段由编译器分配内存,三个区域的内存在程序运行时会一直存在,不会被临时回收。

存储类型:

auto:自动类型(让系统分配内存)

如:int i=10; /auto int i=10; //缺省状态下默认是auto类型。

register:寄存器类型(提高运行速率)

如:register int i=10; //有可能会申请失败,失败自动转为auto类型。

static:静态存储类型。

静态局部变量在函数结束时不会被释放,继续保留原值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值