科锐课堂笔记:2017/3/25 资源分配释放规定

本文介绍了一种在程序中安全管理资源的方法,包括使用初始值、错误处理、资源释放顺序等关键步骤,并提供了一个安全释放资源的宏定义。

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

  在定义一个资源变量标识时,应赋予初始表分配失败的错误值(如常见的NULL)。
  每次向系统申请资源或调用功能接口时,判断其错误处理,如结果失败goto跳转到函数末尾将对程序当前获取的所有资源进行统一释放。
  函数末尾返回前,有一段代码将依次释放所有已分配或占有的设备资源,释放前应先判断变量是否有效,释放后标记资源变量为无效值。这条规则同样适用于任何时候对资源的释放。这样做的好处,一来只对已分配拥有的资源进行清理释放,同一资源不会重复释放,二变量能正确反映资源状态,不存在野指针这种情况。
  统一释放时应按分配的逆顺释放,如时间上先分配资源了A、B、C、D,那么集中释放资源时的顺序则为D、C、B、A,从依赖关系结构上来说,前者一定不依赖后者,而后者有可能对前者存在某种关系。


  典型的free释放的安全宏定义如下:
  #define SAFE_FREE(p) if(p){free(p);p=NULL;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值