2011-10-15 74 views
3

如果我调用一个函数,并用goto函数转义它,我会漏到栈上吗?这就像被零除?宇宙会在一个逆转的大爆炸中内爆吗?调用函数并使用goto进行转义:内存泄漏?

这不是我的程序,但它几乎完全一样的结构......

bool func() 
{ 
    blah(1337.1337); 
    uber("iasouhfia"); 
    if(random) goto escapeLadder; 
} 

int main(int argc, char* argv[]) 
{ 
    for(int i = 0; i < 5000000; i++) 
    { 
     func(); 
    } 
    escapeLadder: 
    return 0; 
} 
+0

跳转到一个标签在不同的功能分配的内存编译失败对我来说不正确 第二。 – icktoofay

+1

这是无效的C++,你会在'goto escapeLadder'上得到一个语法错误。这实际上是纯C吗? –

+3

那是什么语言?它看起来像C,但C和C++都不允许在一个不同的函数中使用'goto'来标签。 –

回答

11

根据draft C++ standard

“标签的范围是在它出现的功能“。(6.1标记语句)

因此,您不能goto到函数外部的标签,因此您的问题包含语法错误。

+0

对于C也是如此。在函数之外跳转需要C++异常或C风格的'setjmp'和'longjmp'。 –

0

第一语法右程序它没有内存泄漏,因为没有不免费内存