运行 时虚拟内存不足,用于发布但不用于调试版本

insufficient virtual memory at run-time for Release but not for Debug version

我在 Visual studio 2010 中使用英特尔 Fortran 编译器 11。我的程序在 运行 时崩溃并出现错误 "severe(41) insufficient virtual memory ",但仅限于 Release 版本。调试版本运行顺利,在任务管理器(Windows 7)中它分配了1.7 GB的内存(工作集(内存),而提交大小为1.9 GB)。我的笔记本电脑有 8GB 内存。为什么Debug 运行ning很顺利? 谢谢

以下假设,即使您的笔记本电脑上有 8GB RAM,并且您可能拥有 64 位操作系统,但 Fortran 创建的可执行文件是 32 位可执行文件。

1.9GB 非常接近 32 位进程可以访问的最大地址 space。如果您的可执行文件是大地址感知并设置了 IMAGE_FILE_LARGE_ADDRESS_AWARE 标志,您可以访问更多。

参见:Memory Limits for Windows and Windows Server Releases

看起来 Release 版本比 Debug 版本使用的稍微多一点。启动时的执行路径可能略有不同,或者您只是使用方式略有不同。 编辑:@HansPassant 正确地指出一些发布优化会放弃一些 RAM 以进行速度优化。

请在您尝试启动 Release 版本时观察任务管理器中的内存分配,以证实或反驳这一理论。

如果该理论被证明是正确的,探索 64 位编译 and/or 稍微减少您的内存需求。