假设你看堆,并具有以下代码的过程中寄存器...连续2次函数调用有什么不同?
...
void Test()
{
for (int i = 0; i < 10; i++)
{
OneRunDontKnow();
}
}
...
你看看究竟两次当进程执行循环堆栈,并在这两个时代OneRunDontKnow
是堆栈的顶部。
你能否知道OneRunDontKnow
是否被弹出堆栈,然后再次推入或者它从未弹出?
编辑:OneRunDontKnow
可以有任何签名(它也可以带参数或返回一个值)。
通过检查堆栈指针?但是,现在的编译器做了很多技巧,即内联。 –
@Jan Dvorak:问题在于本地变量也在堆栈上创建。 – angelatlarge