Windows是否会回收堆栈空间?
发布时间:2020-12-14 02:07:37 所属栏目:Windows 来源:网络整理
导读:我正在做一种叫做“叠画”的技巧.确定特定函数使用多少堆栈空间. 如果我在堆栈上分配了1MB的物品.然后我确定我没有使用任何这些项目. Windows会自动解除(免费)那些未使用的页面吗? 我特别想知道Windows的VMM.关于页面是否已经提交或者不一定是已经提交但只
我正在做一种叫做“叠画”的技巧.确定特定函数使用多少堆栈空间.
如果我在堆栈上分配了1MB的物品.然后我确定我没有使用任何这些项目. Windows会自动解除(免费)那些未使用的页面吗? 我特别想知道Windows的VMM.关于页面是否已经提交或者不一定是已经提交但只是保留? 换句话说,如果我手动访问内存到1MB,那么windows可能会引发访问冲突吗? 解决方法
要回答您的第一个问题,Windows不会拒绝这些页面.在线程终止之前,任何作为堆栈提交的页面都会保持不变.
要回答第二个问题,相关字段位于IMAGE_OPTIONAL_HEADER32或IMAGE_OPTIONAL_HEADER64结构中.它们是SizeOfStackReserve和SizeOfStackCommit.这个结构是PE的NT头的一部分,它又从MSDOS头引用(在PE中以偏移0开始,“MZ”作为魔术值). Microsoft的link.exe具有“/ STACK:reserve [,commit]”开关,它直接与这两个字段相关联. 自问题发生变化后进行编辑:您只能可靠地访问堆栈的已提交页面和当前防护页面.如果您访问不是保护页面的保留页面,您应该期望AV(如果您访问最后一个保护页面,您将获得SEH堆栈溢出异常). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2003 – 从目录服务还原模式中降级2003 DC
- windows-server-2003 – AD:在午夜推出一个MSI应用程序
- Windows应用程序体验服务
- azure – MSBuild在构建时失败,正在寻找旧版本的Microsoft.
- 远程访问Windows Vista到Mac OSX?
- xaml – 如何检测方向变化和更改布局?
- 当用户想要在他们的工作站以及远程(但在他们的桌面上),在Wi
- Analog Clock Window Example
- windows – 使用Certum证书进行代码签名
- windows-server-2012 – HP ProLiant MicroServer Gen 8 –
推荐文章
站长推荐
热点阅读