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

    文章

    2944

    浏览量

    66636

原文标题:goto语句对与错

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

收藏 人收藏

    评论

    相关推荐

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

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

    不同类型UPS电源的优缺点

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

    FPGA与ASIC的优缺点比较

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

    雪崩晶体管有哪些优缺点

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

    运放恒流源有哪些优缺点

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

    GaN HEMT有哪些优缺点

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

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

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

    同步整流的优缺点有哪些

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

    nbiot和lora的优缺点是什么?

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

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

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

    储能元件的分类和优缺点

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

    带你探索稳压器的优缺点和选择技巧

    TOREX特瑞仕(KOYUELEC光与电子):带你探索稳压器的优缺点和选择技巧
    的头像 发表于 01-24 10:35 788次阅读
    带你探索稳压器的<b class='flag-5'>优缺点</b>和选择技巧

    电动机调速方式的优缺点

    电动机调速方式的优缺点  电动机调速是指根据负载的要求调整电动机转速的过程,可分为机械调速和电子调速两种方式。机械调速主要使用机械装置来调整电动机的速度,而电子调速则利用电子器件对电动机进行精确
    的头像 发表于 01-04 11:26 1159次阅读

    WLAN和蜂窝网络的优缺点

    WLAN和蜂窝网络的优缺点 WLAN(无线局域网)和蜂窝网络(Cellular Network)是我们日常生活中广泛使用的两种无线通信技术。它们在连接设备和提供网络服务方面有着不同的优缺点。下面将
    的头像 发表于 12-11 11:26 2166次阅读

    常见开关电源优缺点对比

    常见开关电源优缺点对比
    的头像 发表于 12-07 15:30 659次阅读
    常见开关电源<b class='flag-5'>优缺点</b>对比