我在带有12 GB内存的Windows操作系统上运行了大量内存密集型工作。通过我的计算,4GB的内存应该足以运行程序。我正在使用CodeBlocks运行我用动态内存分配编写的程序(我在C和C ++中有两个版本的程序,分别使用malloc / free和new / delete)。
当我启动任务管理器时,我发现程序似乎只使用大约2GB的Ram,即使我有更多可用的,并且页面文件大小目前设置为30gb。有什么方法可以让ciode块使用更多的内存?我也使用了DEV-C ++,我在C ++代码中得到了同样的bad_alloc错误。
有什么想法吗?提前致谢。 哦,我正在使用64位Windows OS 7.
答案 0 :(得分:1)
请查看此页面,了解基于体系结构(x86,64位)和Windows版本的内存限制。提到了一些解决方法:
http://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx#memory_limits
首先,您必须确保构建64位可执行文件而不是32位
如果使用g ++,请务必使用选项-m64
。
对于msdn页面中提到的大地址感知,默认情况下它应该在64位Windows系统上处于活动状态。
仍然,Visual C ++链接器有一个明确要求它的选项:/LARGEADDRESSAWARE
现在,如果您不使用Visual C ++链接器,如果您想为可执行文件激活大地址感知,则可以使用此作为额外步骤:
editbin /LARGEADDRESSAWARE your_executable
(editbin是一个M $ Visual Studio工具)
答案 1 :(得分:0)
感谢迄今为止的所有帮助。有一个简单的解决方法。我安装了mingw 64bit编译器,指向该编译器的代码块,一切都像魅力一样。好极了。