在C++中执行goto
语句时,下面代码片段中的两个数组是否从栈中移除?还是在方法返回时将它们从堆栈中移除?
retrySplit:
...
uint32_t primsAbove[primitives.size()];
uint32_t primsBelow[primitives.size()];
...
goto retrySplit;
这个问题与使用 goto 语句导致的泄漏无关,而是与您是否可以炸毁堆栈的可能性有关。
最佳答案
这个程序:
#include <iostream>
class X {
public:
X() { std::cout << "ctor" << std::endl; }
~X() { std::cout << "dtor" << std::endl; }
};
int main(int argc, char** argv) {
int i = 0;
label:
X a;
if (i == 0) {
i = 1;
goto label;
}
return 0;
}
产生这个输出:
$ ./a.out
ctor
dtor
ctor
dtor
关于c++ - C++中goto语句对栈的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26818106/