我在Visual Studio 2010中使用英特尔Fortran编译器11.我的程序在运行时崩溃,错误“严重(41)虚拟内存不足”,但只有发布版本。调试版本运行顺利,在Task Menager(Windows 7)中,它分配1.7 GB内存(工作集(内存),而提交大小为1.9 GB)。我的笔记本电脑有8GB的内存。为什么Debug运行顺畅? 感谢
答案 0 :(得分:1)
以下假设,即使您的笔记本电脑上有8GB RAM,并且您可能拥有64位操作系统,Fortran创建的可执行文件也是32位可执行文件。
1.9GB非常接近32位进程可以访问的最大地址空间。如果您的可执行文件具有大地址识别功能并设置了IMAGE_FILE_LARGE_ADDRESS_AWARE标志,则可以访问更多。
请参阅:Memory Limits for Windows and Windows Server Releases
似乎Release版本仅使用稍微多于Debug版本。也许在启动时有一个稍微不同的执行路径,或者您可能只是略微不同地使用它。 编辑:@HansPassant正确指出某些版本优化会放弃一些RAM进行速度优化。
当您尝试启动发布版本以确认或反驳此理论时,请在任务管理器中观察内存分配。
如果理论证明是正确的,请探索64位编译和/或略微减少内存需求。