Joh*_*ing 4 c c++ windows stack kernel
我对exe堆栈的位置感到有点困惑.我知道程序运行之前的CRT通过分配一定量的堆来初始化堆(这又是由分配页面的操作系统分配的),但是在哪里堆?它也在页面上吗?或者它是否在用户模式(ring3)中通过在GDT上使用ring3描述符共享(我想不是,但我不确定)?
Mar*_*nen 5
Windows将为每个线程保留一个连续的虚拟内存区域(默认为1MB).然后,它会提交该内存区域的几个最顶层的页面,并将其作为保护页面标记为一对.当线程的堆栈向下增长时,如果访问了一个防护页面,则会发生异常,并且Windows会提交防护页面并将其下方的页面标记为防护页面.
您可以使用优秀的SysInternals实用程序VMMap来探索此行为.以下是该工具的摘录:
归档时间:
13 年,2 月 前
查看次数:
195 次
最近记录: