【发布时间】:2013-03-31 18:52:07
【问题描述】:
假设您查看具有以下代码的进程的堆栈和寄存器...
...
void Test()
{
for (int i = 0; i < 10; i++)
{
OneRunDontKnow();
}
}
...
当进程执行循环时,您会准确地查看堆栈两次,并且在这两次中,OneRunDontKnow 都位于堆栈的顶部。
您能否以某种方式知道OneRunDontKnow 是从堆栈中弹出然后再次推入,还是从未弹出?
编辑:OneRunDontKnow 可以有任何签名(它也可以接受参数或返回值)。
【问题讨论】:
-
通过检查堆栈指针?然而,现在的编译器做了很多技巧,即内联。
-
@Jan Dvorak:问题是局部变量也是在堆栈上创建的。
标签: windows stack cpu-registers