一个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程序时,这取决于它有多少线程。当然,线程是在运行时创建/退出的