gpt4 book ai didi

windows - 在堆栈上分配更多页面大小的缓冲区会破坏内存吗?

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

在 Windows 中,堆栈的实现方式如下:指定页面之后是已提交的堆栈页面。它的保护标志是 protected 。因此,当 thead 引用 protected 页面上的地址时,会出现内存错误,这会使内存管理器将 protected 页面提交到堆栈并清除该页面的 protected 标志,然后将新页面保留为 protected 页面。

但是,当我分配一个大小超过一页 (4KB) 的缓冲区时,预期的错误并没有发生。为什么?

最佳答案

很好的问题 (+1)。

有一个技巧,很少有人知道(驱动程序编写者除外)。

当您在堆栈上分配大缓冲区时 - 编译器会自动添加所谓的堆栈探测。这是一个额外的代码(通常在 CRT 中实现),它按需要的顺序逐页探测分配的区域。

编辑:

函数是_chkstk

关于windows - 在堆栈上分配更多页面大小的缓冲区会破坏内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123609/

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