gpt4 book ai didi

windows - 调用堆栈问题

转载 作者:可可西里 更新时间:2023-11-01 10:08:00 26 4
gpt4 key购买 nike

我最近一直在研究调用堆栈。然而,我一直在阅读的所有示例和文章都是单线程的。我对调用堆栈在内存中的样子以及我们如何分析它很感兴趣。

很抱歉在一个帖子中包含了这么多问题。但是,当每个问题都相关时,为每个问题创建一个帖子似乎很麻烦。

我的问题是针对 Windows x86 的。所以我遇到困难的问题是:

  1. 进程中的每个线程是否总是有一个调用堆栈?即线程不共享调用栈?

  2. 每个调用栈的大小是固定的吗?还是每个线程都可以不同?

  3. 让我们假装自己做所有事情并用汇编编写我们的程序。调用栈是不是神奇的给了我们?还是必须自己实现?

  4. 如果我们用汇编编写程序,我们是否会预留一些内存并将调用堆栈内存起始地址设置为 ESP 以进行设置?

-迈克尔

最佳答案

1) 每个线程都有自己的堆栈 - 几乎按照定义。

2) 最大堆栈大小是进程限制,在 header 中指定。初始线程堆栈大小是线程创建参数 - 请参阅 CreateThread() API。

3) 操作系统管理所有内存。新线程的堆栈由内核在线程创建时动态分配,堆栈顶部填充堆栈帧,除其他外,允许线程通过以类似于中断的方式弹出帧来开始执行 -返回。不要试图在家里这样做。

4)不!导入并调用 CreateThread() API。

关于windows - 调用堆栈问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10473334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com