c/c++ 中的标签

本文记录了在C++中使用goto时遇到的问题。跑测试用例失败,问题与标签有关。create和delete函数操作资源,delete失败,create函数看似无问题。经分析发现,标签前无return,标签后语句顺序执行,导致delete检测指针为null时用例失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        之前写过一篇文章讲 goto 的 c++中goto的使用,老代码中到处都是goto和标签,然而今天在跑测试用例时却失败了,这个错误就是和标签有关,记录如下。

        有两个函数 create 和 delete,创建和删除资源,结果在删除这一步失败了,查看日志,在创建函数里也有错误打印信息,这个 create() 函数类似这样的:

看日志文件时有那行错误的打印 

        但当我仔细看 create 函数时,没发现有问题,如果函数里调用其他函数有错误而跳到error_label处的话应该还有其他打印的,但是没发现。当我想多加打印进行调试时,突然想到这个标签前没有 return 啊,这个标签后的语句是会顺序执行下去的。

        所以在 delete 函数里检测到指针是 null时,用例才失败的,因为在 create 函数里,标签 error_label 后的语句是删除该指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值