(十五)存储类、链接和内存管理

本文介绍了C/C++编程中的存储类别,包括变量的存储期、作用域和链接点,详细讲解了局部变量、全局变量以及static修饰变量的区别。接着讨论了内存管理,重点阐述了malloc/free的使用以及如何避免内存泄漏。此外,还简述了条件编译的概念。最后,对Makefile进行了介绍,解释了make作为工程管理器的角色以及常用的自动变量。

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

一、存储模型
1、变量:是对程序中数据的存储空间的抽象
存储期:变量在内存中的保存时间
作用域:程序的那些部分通过变量名来使用变量
链接点:程序的那些部分通过变量名来使用变量

2、生命周期与作用域
局部变量:
生命周期:从定义开始,到该模块结束
作用域:该模块内
static修饰的局部变量:
生命周期:从定义开始,到程序结束
作用域:该模块内
全局变量:
生命周期:从定义开始,到程序结束
作用域:整个程序
static修饰的全局变量:
生命周期:从定义开始,到程序结束
作用域:本文件内

3、变量存储类型

二、内存管理
1、malloc/free
malloc与free是配对使用的,free只能释放堆空间。如果malloc返回的指针值丢失,则所分配的堆空间无法回收,称内存泄漏,同一空间重复释放也是危险的,因为该空间可能已另分配,所以必须妥善保存malloc返回的指针,以保证不发生内存泄漏,也必须保证不会重复释放堆内存空间

2、条件编译
编译器根据条件的真假决定是否编译相关的代码
(1)根据宏是否定义
#ifdef <macro>
……
#else
……
#endif
(2)根据宏的值
#if <macro>
……
#else
……
#endif

三、Make简介
1、make:工程管理器(自动编译管理器)
“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作

2、自动变量
$< 第一个依赖文件的名称
$@ 目标文件的完整名称
$^ 所有不重复的目标依赖文件,以空格分开

export:可以将总控的makefile的变量传递下一级的makefile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值