0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

goto的优缺点

Q4MP_gh_c472c21 来源:二进制人生 作者:二进制人生 2020-09-29 14:27 次阅读

很多书籍都会把“”goto“”当成反面教材使用,认为如果使用不当,将会造成很多意想不到的问题。但goto作为C语言的一部分,存在即合理,goto有它的缺点,也有它的优点。 缺点:
很容易把逻辑弄乱,增加理解难度,goto是可以实现无条件跳转的,一旦跳转,就忽略很前面很多代码,特别是在一些逻辑复杂的地方使用,会很容易出问题。所以goto能不用就不用,特别对于新手,尽量避讳。
优点:
方便处理异常情况,特别是内存等系统资源的释放。很多大型项目,开源项目,包括Linux内核,都会使用goto来处理异常情况。 举个例子,以下情况,大家第一反应是没有问题,其实是存在内存泄漏隐患的。如果变量pdate2申请失败,则退出函数。那么问题来了, pdate 申请成功了,但没有得到释放,出现了内存泄漏。所以这种情况如果使用goto,就很容易解决问题。

int module_init(){ char *pdate = (char *)malloc(100); if(pdate == NULL) return -1; char *pdate2 = (char *)malloc(100); if(pdate2 == NULL) return -1; free(pdate); free(pdate2); ......}

goto实现代码

int module_init(){ char *pdate = (char *)malloc(100); if(pdate == NULL) goto err; char *pdate2 = (char *)malloc(100); if(pdate2 == NULL) goto err; free(pdate); free(pdate2); ...... err://统一的出错处理 if(pdate != NULL) free(pdate); if(pdate2!= NULL) free(pdate2);return-1;}另一种写法就是分阶段处理:

if(pdate == NULL)gotoerr1;...if(pdate2==NULL) goto err2; ...err1: free(pdate);err2: free(pdate2);...

总结:存在即合理,好坏取决于如何使用。

-END-

来源 | 二进制人生

原文标题:goto语句对与错

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源代码
    +关注

    关注

    96

    文章

    2948

    浏览量

    67189

原文标题:goto语句对与错

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    香港主机托管和国内主机的优缺点比较

    香港主机托管和国内主机(以大陆主机为例)的优缺点比较,主机推荐小编为您整理发布香港主机托管和国内主机的优缺点比较,希望对您有帮助。
    的头像 发表于 02-05 17:42 151次阅读

    东京站群服务器有哪些优缺点

    东京站群服务器,作为部署在东京地区的服务器集群,专为站群优化而建,其优缺点如下,主机推荐小编为您整理发布东京站群服务器有哪些优缺点
    的头像 发表于 02-05 17:39 137次阅读

    光谱传感器的优缺点

    光谱传感器是一种能够检测并响应光谱范围内不同波长光线的传感器。以下是对其优缺点的详细分析:
    的头像 发表于 01-27 15:28 192次阅读

    不同类型adc的优缺点分析

    ADC(模数转换器)是将模拟信号转换为数字信号的电路,根据转换原理和应用需求的不同,ADC可以分为多种类型,每种类型都有其独特的优缺点,以下是对不同类型ADC的优缺点分析: 逐次逼近型ADC(SAR
    的头像 发表于 11-19 16:58 1677次阅读

    开环和闭环功放的区别,优缺点,应用场合有什么不同?

    问下TI的工程师,开环和闭环功放的区别,优缺点,应用场合有什么不同?请解释下,谢谢!
    发表于 11-04 06:33

    不同类型UPS电源的优缺点

    不间断电源(UPS)是为关键设备提供稳定、不间断电力供应的重要设备。根据设计和功能的不同,UPS可以分为几种类型,每种类型都有其独特的优缺点。以下是一些常见的UPS类型及其优缺点的概述: 在线式
    的头像 发表于 10-28 10:45 1163次阅读

    FPGA与ASIC的优缺点比较

    FPGA(现场可编程门阵列)与ASIC(专用集成电路)是两种不同的硬件实现方式,各自具有独特的优缺点。以下是对两者优缺点的比较: FPGA的优点 可编程性强 :FPGA具有高度的可编程性,可以灵活
    的头像 发表于 10-25 09:24 1137次阅读

    雪崩晶体管有哪些优缺点

    雪崩晶体管作为一种特殊的半导体器件,在电子领域具有其独特的优缺点
    的头像 发表于 09-23 18:05 460次阅读

    运放恒流源有哪些优缺点

    运放恒流源,即利用运算放大器(Operational Amplifier,简称运放)构成的恒流源电路,具有一系列独特的优点和缺点。以下是对其优缺点的详细分析。
    的头像 发表于 08-28 10:18 1572次阅读

    GaN HEMT有哪些优缺点

    GaN HEMT(氮化镓高电子迁移率晶体管)作为一种先进的功率半导体器件,在电力电子、高频通信、汽车电子等多个领域展现出了显著的优势,但同时也存在一些缺点。以下是对GaN HEMT优缺点的详细分析:
    的头像 发表于 08-15 11:09 2115次阅读

    AI大模型与小模型的优缺点

    在人工智能(AI)的广阔领域中,模型作为算法与数据之间的桥梁,扮演着至关重要的角色。根据模型的大小和复杂度,我们可以将其大致分为AI大模型和小模型。这两种模型在定义、优缺点及应用场景上存在着显著的差异。本文将从多个维度深入探讨AI大模型与小模型的特点,并分析其各自的优缺点
    的头像 发表于 07-10 10:39 5057次阅读

    同步整流的优缺点有哪些

    同步整流是一种在数字电路设计中常用的技术,它通过将电路中的所有信号同步到一个共同的时钟信号上,来实现信号之间的同步。这种技术在数字电路设计中具有重要的作用,但同时也存在一些优缺点。以下是对同步整流
    的头像 发表于 07-09 09:09 1468次阅读

    nbiot和lora的优缺点是什么?

    nbiot和lora的优缺点
    发表于 06-04 06:37

    日本大带宽服务器优缺点分析

    日本大带宽服务器是很多用户的选择,那么日本大带宽服务器优缺点都是什么?Rak部落小编为您整理发布日本大带宽服务器优缺点分析。
    的头像 发表于 03-22 10:08 575次阅读

    储能元件的分类和优缺点

    常见的PCS储能用的是电池,有磷酸铁锂,锂电池等材料,但是也有用电容储能的,比如用无极性大电容和超级法拉电容的。 1、请问用电池储能和电容储能那种效率更高?两者各有什么优缺点? 2、在储能过程中,储
    发表于 03-11 23:03