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

    浏览量

    69652

原文标题:goto语句对与错

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    3D打印耗材种类有哪些?各有什么优缺点

    这篇文章将为你详细介绍3D打印耗材的基础知识,帮助你了解这些材料的特性、优缺点以及它们适合的应用场景。
    的头像 发表于 04-29 09:40 6513次阅读
    3D打印耗材种类有哪些?各有什么<b class='flag-5'>优缺点</b>?

    CMOS,Bipolar,FET这三种工艺的优缺点是什么?

    在我用photodiode工具选型I/V放大电路的时候,系统给我推荐了AD8655用于I/V,此芯片为CMOS工艺 但是查阅资料很多都是用FET工艺的芯片,所以请教下用于光电信号放大转换(主要考虑信噪比和带宽)一般我们用哪种工艺的芯片, CMOS,Bipolar,FET这三种工艺的优缺点是什么?
    发表于 03-25 06:23

    压接连接器使用裸铜线的优缺点分析?

    压接连接器使用裸铜线是一种高效、可靠的电气连接方式,广泛应用于电力、通信和工业领域。需要我们正确看待它的优缺点,高效使用。
    的头像 发表于 03-18 11:01 836次阅读

    浅谈汽车系统电压优缺点分析

    以下是12V、24V、48V系统的简单介绍,包括技术特点、优缺点及典型应用场景。汽车电气系统的发展随着车辆电子设备的增多和对能效要求的提高,电压等级也在逐步提升,从传统的12V电
    的头像 发表于 03-06 08:04 1351次阅读
    浅谈汽车系统电压<b class='flag-5'>优缺点</b>分析

    惠斯通电桥的优缺点分析

    惠斯通电桥作为一种经典的电阻测量工具,具有其独特的优缺点。以下是对惠斯通电桥优缺点的详细分析: 优点 高精度 : 惠斯通电桥通过比较电压差来精确测量电阻值,对于微小的电阻变化也能迅速作出反应,因此
    的头像 发表于 02-13 15:26 2007次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为一种常用的机器学习模型,具有显著的优点,同时也存在一些不容忽视的缺点。以下是对BP神经网络优缺点的分析: 优点
    的头像 发表于 02-12 15:36 1574次阅读

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

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

    GoTo否认与Grab合并传闻

    印尼网约车巨头GoTo于当地时间2月4日正式提交文件,明确否认同竞争对手Grab的合并传闻。该公司强调,在未来12个月内,除实施股票回购计划外,并无任何重大行动计划。 此前,市场上有消息称Grab
    的头像 发表于 02-06 10:08 838次阅读

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

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

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

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

    模拟量信号的应用和优缺点

    在现代工业自动化、环境监测、科学研究等领域,模拟量信号作为一种基本且重要的信号形式,扮演着不可或缺的角色。本文将对模拟量信号进行深度解析,探讨其定义、工作原理、传输方式、应用以及优缺点,以期为相关领域的研究者和工程师提供参考。
    的头像 发表于 02-03 11:26 2153次阅读

    光纤通道衰耗正常范围,光纤通道有何优缺点

    在数据通信领域,光纤通道以其高速率、大带宽、低衰减和高可靠性等优势,逐渐成为现代数据中心和企业网络中的首选解决方案。然而,光纤通道的衰耗问题及其优缺点的理解,对于确保系统的稳定性和性能至关重要。本文将深入探讨光纤通道的衰耗正常范围,同时详细分析其优缺点
    的头像 发表于 01-29 15:26 2415次阅读

    光谱传感器的优缺点

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

    不同类型ACDC转换器优缺点 ACDC转换器负载能力分析

    ACDC转换器是将交流电(AC)转换为直流电(DC)的设备,在电力电子领域具有广泛的应用。以下是不同类型ACDC转换器的优缺点以及ACDC转换器负载能力的分析。 一、不同类型ACDC转换器的优缺点
    的头像 发表于 12-09 10:53 4282次阅读