c++ - 如何在 x64 C++ 应用程序中保留底部 4GB VM

标签 c++ winapi 64-bit x86-64

致力于将 32 位 Windows C++ 应用移植到 64 位。不幸的是,该代码在 DWORD 和指针值之间频繁地双向转换。

其中一个想法是在进程启动时尽早预留前 4GB 的虚拟进程空间,这样所有后续的预留内存调用都将来自大于 4GB 的虚拟地址。这将导致从指针到 DWORD 的任何不安全强制转换然后返回到指针的访问冲突错误,这将有助于及早发现错误。

当我查看一个非常简单的一行 C++ 程序的内存映射时,在底部 4GB 内加载了很多库?有没有办法确保所有库等仅在 4GB 以上加载?

谢谢

最佳答案

使用 /Wp64 开关(检测 64 位可移植性问题)编译您的项目并修复所有警告。

关于c++ - 如何在 x64 C++ 应用程序中保留底部 4GB VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1168481/

相关文章:

c++ - 如何在编译时找出可以表示数字的最小整数类型

c++ - 结构中的奇数字段? C++

c++ - 为几个可能的参数(类型名)专门化类

c++ - 仅当您在 QML 中单击 Blackberry Cascades 模拟器时,您如何响应点击文本字段?

c++ - 如何使创建的没有 WS_VISIBLE 的 Win32 控件可见?

linux - 64 位 linux,汇编语言,问题?

web-applications - 在 64 位 : missing targets file 上从命令行使用 MSBuild 构建 Web 应用程序项目

delphi - 从服务运行应用程序,CreateProcessAsUser 失败

c++ win32从编辑框中隐藏(禁用)插入符号

MySQL 64 位?独立?