拨打电话的呼叫堆栈中的某些东西

问题描述:

当堆栈中的呼叫者较高时,这是什么意思?例如,让我说我开始一个程序,一个表单加载(我们将这个称为a),然后这个表单调用另一个表单(b)。被调用的表单将位于堆栈的顶部,所以如果这个表单称为表单a,这是否会成为堆栈中更高的调用者,从而调用下面的某个东西?拨打电话的呼叫堆栈中的某些东西

感谢

+1

wtf你的意思是表单? – 2009-01-11 17:31:17

您需要进行调用(如果有的话)对象之间的区别,呼叫的目标和方法被调用。例如,您的调用堆栈可以很容易地是这样的:

FormA.Method3() 
FormB.Method2() 
FormA.Method1() 

这是备考的执行方法1的实例,调用方法2上FormB的一个实例。然后在FormA的实例上调用Method3 - 或者与第一个FormA相同,或者不同。这并不重要。

这不是真的叫“下面的东西”的情况下,因为堆栈帧不代表对象 - 它们代表方法(和这些方法中的状态)。这是否有帮助,还是只是混淆了更多的东西?

我认为你必须调用堆栈的错误印象。调用stach只是被调用函数的“列表”。当OU有一个调用链像你描述的,一个电话B的调用,你的筹码就是:

a.second 
b.first 
a.first 

你真的不能称之为“下降”的东西。你做了另一个调用,它在堆栈顶部,即使它之前被调用过,前一个调用完全不同,新调用开始一个全新的“堆栈帧”。