debugging - 为什么在 64 位 Windows 下使用 ApplicationVerifier 进行堆调试时,会将 32 位进程限制为 2 GiB 的虚拟内存?
问题描述
我想使用 Windows 10 SDK(版本 10.0.18362.1)提供的 ApplicationVerifier 来加速调试在 64 位 Windows 10(内部版本 1909)下运行的 32 位应用程序中的(可能的)堆损坏。不幸的是,启用堆时使用 Basic 列表下的默认设置(并且仅启用该功能)的功能,一旦其内存使用量接近 2 GiB,应用程序就会耗尽内存,即使应用程序本身被编译为大地址感知。
无论我使用 Application Verifier x86 还是 Application Verifier x64 来激活堆检查,都会出现此问题。(而且我什至不确定这两个版本之间的区别是什么。)
我已经通过“帮助”菜单搜索了可用的文档,该菜单实际上非常广泛,但没有找到任何原因。我知道插入保护页面并将分配的开始或结束对齐到页面边界会增加内存消耗,但我不希望它将可用内存减少一半或以其他方式限制虚拟地址空间,至少在没有明确启用此类设置的情况下不会堆功能的选项。有谁知道这种行为的原因并且可以告诉我如何规避这个限制?
解决方案
推荐阅读
- python - 在 Python 中使用 ElementTree 从 xml 中获取数据
- bluetooth-lowenergy - 在 xcode 应用程序中实现蓝牙 LE 的问题
- reactjs - React-native-calendars(wix)议程视图对齐已损坏
- javascript - 动态填充 Jqgrid 下拉过滤器
- ios - Swift 获取 HTTP JSON 响应并使用 Codable 解析它
- rgb - 具有深度信息的 RGB 图像
- google-app-engine - 504 bad gateway nginx 应用引擎标准 python37 运行时 basic_scaling
- elasticsearch - elasticsearch:以“HH:mm:ss”格式添加持续时间
- react-native - React Native 子组件更新
- javascript - 在scrapy中获取document.write的输出