关于网友提出的“ 运行时栈和程序栈有什么区别?”问题疑问,本网通过在网上对“ 运行时栈和程序栈有什么区别?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 运行时栈和程序栈有什么区别?
描述:栈
最近看书老是看到这两个词 来回切换,也不明白它两有啥区别。百度一下都是说堆和栈的事情。。这个不用说我也知道。 求指教

解决方案1:
我觉得运行时栈听起来像是某个runtime自己的玩意,比如perl的函数就不是底层函数,它自己也有一个列表当栈用。
解决方案2: 额,字面意思而已,我的理解。
运行时栈是动态的,也就是程序在运行时栈在不停的push,pop
程序栈是静态的,也就是程序编译好后栈就放在那里,不多不少
解决方案3: 1)首先看你的程序类型
是应用程序,还是驱动程序
驱动是内核态,堆栈是可以切换的。
2)看你的运行环境,是裸机上运行还是操作系统上运行
3)看你的书籍和书籍的翻译人员,不同人员翻译的名词不一致。
4)个人看法,如果是应用程序的话, 应该是栈和当前函数的栈帧的区别。
栈帧是函数内部,可以通过名字直接访问的局部变量,形参
和为函数返回,而准备的函数返回地址(X86,WIn32为例)
以及其他一些数据,包括临时变量,使用的局部堆栈空间。
函数调用时,栈帧是逐层展开的。
函数返回,栈帧被恢复到,函数返回前的状态。
另外,函数调用API的时候,可能会切换到内核态;
那么API运行在内核态的栈,是和用户状态的栈不同的。
用户态栈,才是应用程序自己使用的堆栈,可能是和API用户态公用的栈。
而内核态栈,则不属于应用程序,是系统内核专用的。
必要时应用程序,可以自行定义栈;
然后切换到自行定义栈上运行,注意需要切换回来。不然会出错。
解决方案4:
当然不是说的是函数啦。是运行时环境,包括资源,动态库等等。
解决方案5: 我的感觉是运行时栈是包括系统启动程序需要的栈,比如windows下的包括user32.dll,msvcr.dll等等
程序栈就是你运行的程序需要的栈。
个人理解,不知道对不对。希望大神来解惑
以上介绍了“ 运行时栈和程序栈有什么区别?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3651070.html