调用函数并使用 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;
}
If I call a function, and escape it with a goto, will I be leaking onto the stack? Is that like dividing by zero? Will the universe implode in a reverse-Big-Bang?
This is not my program, but it has almost exactly the same structure...
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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据 C++ 标准草案:
< em>“标签的范围是它出现的函数。”(6.1 带标签的语句)
因此,您不能
转到
到函数外部的标签,因此您的问题包含语法错误。According to draft C++ standard:
"The scope of a label is the function in which it appears." (6.1 Labeled statement)
So, you can't
goto
to a label outside the function, hence your question contains a syntax error.第一个语法不正确
正确程序中的第二个它不会造成内存泄漏,因为没有空闲内存就没有分配内存
first syntax is incorrect
second in right program it does not make memory leak because the is no memory allocated without free memory