【问题标题】:Is everything cleaned up when using 'goto'? [duplicate]使用“goto”时是否已清理所有内容? [复制]
【发布时间】:2013-08-07 10:31:44
【问题描述】:
for (int i = 0 ; i < 10 ; ++i)
{
    for (int j = 0 ; j < 10 ; ++j)
    {
        goto label;
    }
}
label:
// stuff

goto 之后ij 变量会被释放吗?据我所知,goto 不会展开堆栈或进行任何清理,所以在这种情况下它会搞砸一些事情吗?

【问题讨论】:

  • 你需要goto吗?如果需要上面的函数,在一个函数中添加,使用return
  • 永远不要使用goto。你也可以很容易地自己检查一下。
  • @Jori, goto 有它的位置,但在这里,一个函数可能是最好的。
  • 这是我发现goto 有用的少数情况之一。 break 关键字不会打破嵌套循环。
  • @Jori 有时 goto 适合退出嵌套循环。

标签: c++ goto


【解决方案1】:

是的,它被清理干净了。因为 C++ 会释放超出范围的变量。

【讨论】:

    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2011-05-09
    • 2015-03-18
    • 1970-01-01
    • 2021-12-21
    • 2011-06-09
    相关资源
    最近更新 更多