基础类---调用堆栈

声明

        本博客中的很多术语,模型并非教科书或业界认可的,而是个人分析后根据理解所取定义的。这些术语、模型存在很多片面理解,但有助于本人对系统的理解和学习。希望观看本博客的各位朋友慎重,对大家有帮助的我感到很荣幸,有错误的,敬请批评指正。

嵌套调用的实例

        一般的应用程序,都是从main()函数开始执行,在实现程序的功能时,通常每个功能都有一个入口函数,如GetFreq(),获取某个测试点的信号频率值。GetFreq()方法在实现其功能时,需要调用很多方法,比如有三个GetStepL2_1(),GetStepL2_2(),GetStepL2_3()。在这三个函数自身的实现时,也会调用其他的方法,需要不断的嵌套调用。比如GetStepL2_1()调用GetStepL3_1(),GetStepL3_2(),GetStepL3_3();GetStepL2_2()调用GetStepL3_1(),GetStepL3_2();GetStepL2_3()调用GetStepL3_1()。(注意,这里有意识的使用GetStepLx_x()这样的命名方式来区分不同深度的方法)嵌套调用的终点是调用仪器的驱动。根据嵌套的深度,可以将不同的函数归纳为不同的深度。调用深度的定义是这样的,GetFreq()为第一级,GetStepL2_1(),GetStepL2_2(),GetStepL2_3()为第二级;GetStepL3_1(),GetStepL3_2(),GetStepL3_3()为第三级,一次类推。其拓扑结构向树根的分支。

调用链模型

上例中,

GetFreq()--->GetStepL2_1()--->GetStepL3_1(),

GetFreq()--->GetStepL2_1()--->GetStepL3_2(),

GetFreq()--->GetStepL2_1()--->GetStepL3_3(),

GetFreq()--->GetStepL2_2()--->GetStepL3_1(),

GetFreq()--->GetStepL2_2()--->GetStepL3_2(),

GetFreq()--->GetStepL2_3()--->GetStepL3_1()

都是调用链,共有六条调用链,每条调用链都会对应一个调用堆栈。

当然,这些调用堆栈的拓扑结构并不是平行的,而是树状的,很多调用链都有共同的部分。

调用堆栈

        在函数嵌套调用时,以函数为单元,每当有个函数被调用时,都被压入堆栈(这里不是以调用处的断点,调用者的局部变量这些方面分析,而是以整个函数为一个基本单元,压栈和出栈都是以函数为单位)。因此,形成一个函数调用堆栈。从此可以分析,位于调用堆栈栈顶的一定是调用模型中,深度最深的。比如上例中模块提供的驱动函数位于每个调用链的栈顶。在每条调用链中,GetFreq()都是位于栈底的。这和堆栈的特性一样,最晚入栈的在栈顶。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值