程序中的堆栈实现

时间:2014-04-05 00:44:47

标签: multithreading operating-system stack

我刚开始学习操作系统。关于堆栈我感到很困惑。正如我发现堆栈附加到每个线程。这意味着堆栈的生命周期是创建线程的时间,并在线程完成时回收。 同时从谷歌搜索,参数和一些局部变量都存储在线程中。但是这些是在编译时分配的,这似乎与前者冲突,堆栈附加到线程并在线程完成后回收。 任何人都可以给我一些细节解释?

1 个答案:

答案 0 :(得分:0)

  

参数和一些局部变量存储在线程中。但这些是在编译时分配的

这是不正确的。

启动线程时,堆栈与该线程关联。当一个线程终止时,该堆栈将被回收。

有关无法在编译时分配的原因的示例,请设想一个程序,该程序会提示用户启动多个线程,然后启动该线程数。编译器无法为该线程上运行的方法或与该线程关联的本地存储的参数分配存储空间。