goto语句对与错

许多书会使用“ goto”或“ goto”。

作为否定的教科书,认为如果使用不当,会引起很多意想不到的问题。

但是作为C语言的一部分,goto是合理的。

后藤既有缺点,也有优点。

缺点:容易弄乱逻辑并增加理解的难度。

Goto可以实现无条件的跳转。

跳转后,您将忽略很多先前的代码,尤其是在逻辑上很复杂的地方,这很容易引起问题。

因此,可以在没有它的情况下使用goto,尤其是对于新手,请避免忌讳。

优点:处理异常情况特别方便,尤其是内存等系统资源的释放。

许多大型项目,开源项目(包括Linux内核)将使用goto处理异常情况。

例如,在以下情况下,每个人的第一反应是没有问题,实际上,存在内存泄漏的隐患。

如果变量pdate2应用程序失败,则函数退出。

然后问题来了。

pdate应用程序成功,但未发布,并且存在内存泄漏。

因此,如果在这种情况下使用goto,则很容易解决问题。

int module_init(){char * pdate =(char *)malloc(100); if(pdate == NULL)返回-1; char * pdate2 =(char *)malloc(100); if(pdate2 == NULL)返回-1;免费(日期);免费(pdate2); ......}转到实现代码int module_init(){char * pdate =(char *)malloc(100); if(pdate == NULL)转到err; char * pdate2 =(char *)malloc(100); if(pdate2 == NULL)转到err;免费(日期);免费(pdate2); ...... err://统一错误处理if(pdate!= NULL)free(pdate); if(pdate2!= NULL)免费(pdate2); return -1;}另一种写法是分阶段进行处理:if(pdate == NULL)goto err1; if(pdate == NULL)转到err1; if(pdate == NULL)(pdate2 == NULL)转到err2; ... err1:free(pdate); err2:free(pdate2); ...摘要:存在是合理的,好坏取决于如何使用它。

-END-来源|二元生命作者|二进制生命|本文经过编译以传播相关技术,并且版权归原作者所有。

| |如有侵权,请联系删除| [1]干货:嵌入式C语言源代码优化程序[2] C语言内存泄漏非常严重,该如何处理? [3] C语言函数指针的回调函数[4]光刻机的原理分析—光刻机“雕刻”到底是什么? [5]华为即将在宏梦OS之后发布国内编程语言!

联系方式

位居电子保护元件及天线产品之领导地位的佳邦科技,为电脑、通信、消费性及车用电子市场提供了多元化的选择。为了让电子产品可以发挥更完善、有效率的功能,佳邦科技提供了完整的电路保护、电磁干扰/电磁防护、电源保护、RF天线产品线。佳邦在台湾保持元件及天线产品领先的地位。
在高度竞争的市场中大幅成长并达到效率的改善,产品良率的提升,以及成本效益的掌控,此外并要取得在先进电子保护元件与无线电射频天线市场的领导地位。

查看详情

在线咨询