我正在具有 12 GB RAM 的 Windows 操作系统上运行内存密集型作业。根据我的计算,4 GB 内存应该足以运行该程序。我正在运行我用动态内存分配编写的程序(我有两个版本的 C 和 C++ 程序)malloc
/free
and new
/delete
分别)使用CodeBlocks。
当我打开任务管理器时,我发现该程序似乎只使用了大约 2 GB 的 RAM,即使我有更多可用的 RAM,并且页面文件大小当前设置为 30 GB。有什么方法可以让 CodeBlocks 使用更多内存吗?我还使用了 DEV-C++,并且在 C++ 代码中遇到了相同的 bad_alloc 错误。
有任何想法吗?提前致谢。
哦,我使用的是 64 位 Windows 7。
请查看此页面,了解基于体系结构(x86、64 位)和 Windows 版本的内存限制。提到了一些解决方法:
https://learn.microsoft.com/en-us/windows/win32/memory/memory-limits-for-windows-releases#memory_limits
首先,您必须确保构建的是 64 位可执行文件,而不是 32 位。
如果使用 g++,请确保使用选项-m64
.
至于MSDN页面中提到的大地址感知,它在64位Windows系统上默认应该是活动的。
尽管如此,Visual C++ 链接器仍然可以选择显式请求它:/LARGEADDRESSAWARE
现在,如果您不使用 Visual C++ 链接器,如果您想为可执行文件激活大地址识别,您似乎可以随时使用此步骤作为额外步骤:
editbin /LARGEADDRESSAWARE your_executable
(editbin 是一个 M$ Visual Studio 工具)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)