系统栈 子函数的调用机理:暂停某个函数去执行另外一个函数 记录这个函数执行位置 将 中断位置的记录函数放入栈中!
系统栈 暂停某个函数去执行另外一个函数 记录这个函数
是将 中断位置的记录函数放入栈中!
1、在函数不需要暂停调用的时候是没有将记录函数放入栈中的
2、当函数A暂停 调用函数B时候会将函数A及其暂停的位置第2行处 记录函数放到系统栈中
3、当函数B暂停调用函数C 时候 将函数B及其暂停位置第2行处 压入记录系统栈中
4、当函数C运行完之后,发现栈顶元素是B2,那么运行完C之后就会跳回到函数B的第二行,
系统栈就可以成功的帮助找到上一次函数中断的位置,
5、当回到B2函数位置时候 栈中的B2记录函数也就没有用了,继续往下执行B函数,
当这个子函数执行完之后 再回去看系统栈中有没有记录其他的函数
6、发现还有栈中还有A2元素,就继续到函数A的第二行继续执行A函数,同时系统栈中的A2记录函数也就失效了,
7、当函数A也执行完了之后,发现系统栈空的,说明已经没有被暂停的函数之后,说明整个过程已经执行完了。
1、在函数不需要暂停调用的时候是没有将记录函数放入栈中的
2、当函数A暂停 调用函数B时候会将函数A及其暂停的位置第2行处 记录函数放到系统栈中
3、当函数B暂停调用函数C 时候 将函数B及其暂停位置第2行处 压入记录系统栈中
4、当函数C运行完之后,发现栈顶元素是B2,那么运行完C之后就会跳回到函数B的第二行,
系统栈就可以成功的帮助找到上一次函数中断的位置,
5、当回到B2函数位置时候 栈中的B2记录函数也就没有用了,继续往下执行B函数,
当这个子函数执行完之后 再回去看系统栈中有没有记录其他的函数
6、发现还有栈中还有A2元素,就继续到函数A的第二行继续执行A函数,同时系统栈中的A2记录函数也就失效了,
7、当函数A也执行完了之后,发现系统栈空的,说明已经没有被暂停的函数之后,说明整个过程已经执行完了。