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

    文章

    2953

    浏览量

    68538

原文标题:goto语句对与错

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PCBA 表面处理:优缺点大揭秘,应用场景全解析

    一站式PCBA加工厂家今天为大家讲讲PCBA加工如何选择合适的表面处理工艺?PCBA表面处理优缺点与应用场景。在电子制造中,PCBA板的表面处理工艺对电路板的性能、可靠性和成本都有重要影响。选择合适
    的头像 发表于 05-05 09:39 ?608次阅读
    PCBA 表面处理:<b class='flag-5'>优缺点</b>大揭秘,应用场景全解析

    硅谷物理服务器的优缺点分析

    硅谷物理服务器因其高性能、高质量和先进的技术支持而在全球范围内享有很高的声誉。硅谷物理服务器的优缺点分析如下,主机推荐小编为您整理发布硅谷物理服务器的优缺点分析。
    的头像 发表于 02-12 09:30 ?364次阅读

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

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

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

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

    光谱传感器的优缺点

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

    不同类型adc的优缺点分析

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

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

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

    不同类型UPS电源的优缺点

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

    FPGA与ASIC的优缺点比较

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

    锌银电池的优缺点_锌银电池的应用

    锌银电池,也称为银锌电池,是一种具有显著特点的电池类型。以下是锌银电池的优缺点详细分析:
    的头像 发表于 10-03 14:51 ?3362次阅读

    雪崩晶体管有哪些优缺点

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

    带你了解无刷电机与有刷电机的优缺点

    无刷电机和有刷电机各有其独特的优缺点,选择哪种电机类型取决于具体的应用场景和需求。
    的头像 发表于 09-21 11:24 ?2487次阅读

    运放恒流源有哪些优缺点

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

    放大器增益调节有哪些优缺点

    放大器增益调节的优缺点是多方面的,这些方面涉及到放大器的性能、应用、设计以及实际使用中的挑战。
    的头像 发表于 08-16 17:14 ?1952次阅读

    GaN HEMT有哪些优缺点

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