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

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

    关注

    95

    文章

    2929

    浏览量

    66067

原文标题:goto语句对与错

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    WLAN和蜂窝网络的优缺点

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

    常见开关电源优缺点对比

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

    请问Arduino与树莓派相比各自有什么优缺点

    玩过arduino,想入手树莓派了。想问下这两者的优缺点
    发表于 11-07 07:53

    单电源的优缺点 为什么我们在实际设计中会选择单电源系统呢?

    单电源的优缺点 双电源的优缺点 为什么我们在实际设计中会选择单电源系统呢? 单电源和双电源是电子设计中常见的两种电源架构。在实际设计中,我们选择单电源系统还是双电源系统,需要根据具体的应用场
    的头像 发表于 10-29 14:21 1068次阅读

    电阻式触摸屏的原理及优缺点

    电子发烧友网站提供《电阻式触摸屏的原理及优缺点.pdf》资料免费下载
    发表于 10-08 10:16 1次下载
    电阻式触摸屏的原理及<b class='flag-5'>优缺点</b>

    共源共栅Cascode以及级联Cascade的优缺点是什么?

    共源共栅Cascode以及级联Cascade的优缺点是什么? 共源共栅Cascode以及级联Cascade是常用的放大电路架构,它们在不同应用场合中具有不同的优缺点。在本文中,我们将就这些架构列举
    的头像 发表于 09-18 15:08 5302次阅读

    CML型比较器和StrongArm型比较器的优缺点是什么?

    Regeneration型比较器,CML型比较器和StrongArm型比较器的优缺点是什么?  比较器是数字电路中广泛使用的关键组件,用于比较两个输入信号并输出相应的逻辑值。它是以数字方式实现模拟
    的头像 发表于 09-17 17:11 1756次阅读

    igbt的优缺点介绍

    igbt的优缺点介绍 IGBT的优缺点介绍 IGBT是一种晶体管,是MOSFET和BJT集成而成的开关,具有高速开关能力和较低的导通电阻,用于高效率的功率调节。IGBT具有一些优点和缺点,下面将详细
    的头像 发表于 08-25 15:03 4944次阅读

    石墨烯电池的优缺点是什么?

    石墨烯电池的优缺点是什么?  石墨烯是一种具有极高导电性、热导性和物理可塑性的材料,可以被用于制造各种电子设备和材料。石墨烯电池是一种基于石墨烯技术的电池,与传统的电池相比,具有一些独特的优缺点
    的头像 发表于 08-22 17:06 3.3w次阅读

    数字电源和开关电源的优缺点

    数字电源和开关电源的优缺点 数字电源和开关电源是现代电子设备中最常用的两种电源。这两种电源在设计和工作原理上有很大的不同,因此也有不同的优缺点。本文将详细介绍数字电源和开关电源的优缺点。 一、数字
    的头像 发表于 08-18 15:01 1488次阅读

    球阀,蝶阀,止回阀,闸阀四种阀门的优缺点

    阀门的类型有很多种,每种都有各自的优缺点,下面小编就列举五大阀门优缺点,包括闸阀、蝶阀、球阀、截止阀和旋塞阀,希望对您有所帮助。
    发表于 08-11 11:47 684次阅读

    共地和分地的优缺点

    共地与分地并没有硬性规定,可以按需求自己设计。这里归纳一下他们的优缺点。 分地不容易短路。但是地与地与正极与负载之间容易形成电压差。形成奇怪的故障现象。 共地,拥有稳定的二进制表现,即稳定的直流表现
    发表于 06-27 16:48

    双电芯电池的优缺点

    双电芯电池是一种由两个电池单元组成的电池。这种电池通常由两个相同的电池单元并联而成,以提供更高的电压和/或更长的使用时间。与单电池相比,双电芯电池具有许多优点和一些缺点。本文将介绍双电芯电池的优缺点
    的头像 发表于 06-20 17:29 8358次阅读