2013-07-03 37 views
2

我在具有12 GB RAM的Windows OS上运行大量内存密集型作业。通过我的计算,4GB的内存应该足以运行该程序。我正在使用CodeBlocks运行我用动态内存分配(我有C和C++中的程序的两个版本,分别为malloc/free和new/delete)编写的程序。由C/C++程序使用的增加(非堆栈)内存

当我拉起任务管理器时,我发现程序似乎只使用大约2GB的Ram,即使我有更多的可用空间,并且页面文件大小目前设置为30gb。有没有什么办法可以让ciode块使用更多的内存?我还使用了DEV-C++,并在C++代码中得到了相同的bad_alloc错误。

任何想法?提前致谢。 哦,我正在使用一个64位的Windows操作系统7.

+0

我假设你使用的是32位版本的Windows,在这种情况下答案是否定的。如果您使用的是64位版本的Windows,则可以构建一个可以访问所有系统内存的64位二进制文​​件。 –

+0

我正在使用一个64位的Windows操作系统7. – user1775614

+0

听起来像你正在编译一个32位目标。你正在使用哪个编译器? –

回答

0

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

2

看看这个页面的内存限制基于体系结构(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工具)

+0

dev-C++/code-block的解决方法可能是使用ms的ld.exe。 http://forums.codeblocks.org/index.php?topic=12183.45 –

+0

哦,对不起,我读得太快了。看起来像你可以使用editbin(http://msdn.microsoft.com/en-us/library/xd3shwhf%28v=vs.80%29.aspx)允许更多的内存到编译的二进制文件。 –

+0

看起来像我必须下载editbin.exe - 这看起来像一个很好的地方下载它? http://originaldll.com/file/editbin.exe/39047.html – user1775614