gpt4 book ai didi

c++ - Windows 上的堆栈 - 它在哪里?

转载 作者:可可西里 更新时间:2023-11-01 13:52:17 24 4
gpt4 key购买 nike

我对 exe 堆栈的位置有点困惑。我知道程序运行前的 CRT 通过分配一定数量的堆来初始化堆(这又由分配页面的操作系统分配),但是堆栈在哪里?它也在一个页面上吗?还是通过在 GDT 上使用 ring3 描述符在用户模式 ​​(ring3) 中由所有程序共享(我认为不是,但我不确定)?

最佳答案

Windows 将为每个线程保留一个连续的虚拟内存区域(默认为 1MB)。然后它提交该内存区域的几个最顶层页面,并将其下方的几个页面标记为保护页面。随着线程的堆栈向下增长,如果访问保护页面,则会发生异常,Windows 会提交保护页面并将其下方的页面标记为保护页面。

您可以使用优秀的 SysInternals 探索这种行为公用事业 VMMap .以下是该工具的一个片段:

enter image description here

关于c++ - Windows 上的堆栈 - 它在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12436891/

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