2010-10-12 49 views

回答

2

它们混合。但是,这取决于实际的编程语言/编译器。我可以将一个编译器分配给堆上局部变量的空间并保留指向堆栈上的存储的指针。

没有每个线程一个堆栈中的每个过程。因此,例如,一个有20个线程的进程有20个独立的堆栈。

0

这取决于编译器,但x86架构是面向一个堆叠,由于方法push和pop指令与单一堆栈指针的工作。编译器将不得不做更多的工作来维护多个堆栈。

2

正如其他人已经指出的,它主要是一个单一的,混合堆栈。我只是添加一个小细节:合理地,最近的处理器也有一个小的缓存返回地址存储在处理器本身,这只存储返回地址,而不是其他数据。这主要是虽然更快的执行速度的外部不可见...

0

更多注:在Win32中的每个线程都有自己的堆栈。所以,当你告诉“Windows程序” - 它取决于它有多少个线程。 (当然,线程在运行期间被创建/退出)。