之前写过一篇文章讲 goto 的 c++中goto的使用,老代码中到处都是goto和标签,然而今天在跑测试用例时却失败了,这个错误就是和标签有关,记录如下。
有两个函数 create 和 delete,创建和删除资源,结果在删除这一步失败了,查看日志,在创建函数里也有错误打印信息,这个 create() 函数类似这样的:
看日志文件时有那行错误的打印
但当我仔细看 create 函数时,没发现有问题,如果函数里调用其他函数有错误而跳到error_label处的话应该还有其他打印的,但是没发现。当我想多加打印进行调试时,突然想到这个标签前没有 return 啊,这个标签后的语句是会顺序执行下去的。
所以在 delete 函数里检测到指针是 null时,用例才失败的,因为在 create 函数里,标签 error_label 后的语句是删除该指针。