在Windows x86-32/x86-64架构的操作系统中,线程堆栈虚拟内存由“保留部分”、“提交部分”、“守卫页”和“保留页”组成。
问题:
假设我有1页提交内存和1MB的线程堆栈保留内存。我在堆栈上分配了一些内存,等于K页而没有初始化。例如,K等于10。看起来,在堆栈帧的开始,用户空间代码将分配堆栈上的内存:
问题:
假设我有1页提交内存和1MB的线程堆栈保留内存。我在堆栈上分配了一些内存,等于K页而没有初始化。例如,K等于10。看起来,在堆栈帧的开始,用户空间代码将分配堆栈上的内存:
sub esp, K*4096
当存在对保护页的读写请求时,Guard Page机制会起作用。
但是,如果我要读写超出此保护页的某些内存,会发生什么?