Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个windows程序使用多少堆栈?_Windows_Assembly_Stack - Fatal编程技术网

一个windows程序使用多少堆栈?

一个windows程序使用多少堆栈?,windows,assembly,stack,Windows,Assembly,Stack,返回地址和数据是混合/存储在同一个堆栈中,还是在两个不同的堆栈中,情况就是这样?它们是混合的。但是,这取决于实际的编程语言/编译器。我可以想象编译器在堆上为局部变量分配空间,并在堆栈上保留指向存储的指针 在每个进程中,每个线程有一个堆栈。因此,例如,一个有20个线程的进程有20个独立堆栈。它们是混合的。但是,这取决于实际的编程语言/编译器。我可以想象编译器在堆上为局部变量分配空间,并在堆栈上保留指向存储的指针 在每个进程中,每个线程有一个堆栈。因此,例如,一个有20个线程的进程有20个独立堆栈。

返回地址和数据是混合/存储在同一个堆栈中,还是在两个不同的堆栈中,情况就是这样?

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


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

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


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

这取决于编译器,但x86体系结构面向单个堆栈,这是因为push和pop指令使用单个堆栈指针的方式。编译器需要做更多的工作来维护多个堆栈。

这取决于编译器,但x86体系结构面向单个堆栈,这是因为push和pop指令使用单个堆栈指针的方式。编译器需要做更多的工作来维护多个堆栈。

正如其他人已经指出的,它主要是一个单一的混合堆栈。我只想添加一个小细节:最近的处理器也有一个小的返回地址缓存,它存储在处理器本身中,并且只存储返回地址,而不存储其他数据。在执行速度更快的情况下,它基本上是不可见的,不过…

正如其他人已经指出的,它基本上是一个单一的、混合的堆栈。我只想添加一个小细节:最近的处理器也有一个小的返回地址缓存,它存储在处理器本身中,并且只存储返回地址,而不存储其他数据。在执行速度更快的情况下,它基本上是不可见的…

更多注意:Win32中的每个线程都有自己的堆栈。所以,当你告诉windows程序时,这取决于它有多少线程。当然,线程是在运行时创建/退出的。

更多说明:Win32中的每个线程都有自己的堆栈。所以,当你告诉windows程序时,这取决于它有多少线程。当然,线程是在运行时创建/退出的