2

我在具有 12 GB RAM 的 Windows 操作系统上运行大量内存密集型作业。根据我的计算,4 GB 的内存应该足以运行程序。我正在使用 CodeBlocks运行我使用动态内存分配编写的程序(我在 C 和 C++ 中有两个版本的程序,分别带有malloc/freenew/ )。delete

当我打开任务管理器时,我看到该程序似乎只使用了大约 2 GB 的 RAM,即使我有更多可用内存,并且页面文件大小当前设置为 30 GB。有什么办法可以让 CodeBlocks 使用更多内存?我还使用了 DEV-C++,并且在 C++ 代码中得到了相同的 bad_alloc 错误。

有任何想法吗?提前致谢。哦,我使用的是 64 位 Windows 7。

4

2 回答 2

2

查看此页面以了解基于体系结构(x86、64 位)和 Windows 版本的内存限制。提到了一些解决方法:
https ://docs.microsoft.com/en-us/windows/win32/memory/memory-limits-for-windows-releases#memory_limits

首先,您必须确保构建的是 64 位可执行文件,而不是 32 位。
如果使用 g++,请确保使用 option-m64


至于 MSDN 页面中提到的大地址感知,它应该在 64 位 Windows 系统上默认处于活动状态。不过,Visual C++ 链接器有一个选项可以显式请求它:/LARGEADDRESSAWARE

现在,如果您不使用 Visual C++ 链接器,如果您想为您的可执行文件激活大地址感知,您似乎总是可以将其用作额外步骤:

editbin /LARGEADDRESSAWARE your_executable

(editbin 是一个 M$ Visual Studio 工具)

于 2013-07-03T19:24:09.593 回答
0

感谢迄今为止的所有帮助。有一个简单的解决方法。我安装了 mingw 64 位编译器,将代码块指向该编译器,一切都像魅力一样工作。耶。

于 2013-07-05T19:46:11.647 回答