C++ 增加C/C+使用的(非堆栈)内存+;程序

C++ 增加C/C+使用的(非堆栈)内存+;程序,c++,c,memory,C++,C,Memory,我在一个有12GB内存的windows操作系统上运行一个内存密集型作业。根据我的计算,4gb的内存应该足以运行这个程序。我正在运行我用动态内存分配编写的程序(我有2个版本的C和C++程序,分别使用MalOC/FILE和Neal/Delphi),使用CODBROCKED。p> 当我打开任务管理器时,我看到该程序似乎只使用了2GB左右的Ram,即使我有更多的可用内存,并且页面文件大小当前设置为30gb。有没有办法让ciode块使用更多内存?我还使用DEV-C++,我在C++代码中得到了同样的BADO

我在一个有12GB内存的windows操作系统上运行一个内存密集型作业。根据我的计算,4gb的内存应该足以运行这个程序。我正在运行我用动态内存分配编写的程序(我有2个版本的C和C++程序,分别使用MalOC/FILE和Neal/Delphi),使用CODBROCKED。p> 当我打开任务管理器时,我看到该程序似乎只使用了2GB左右的Ram,即使我有更多的可用内存,并且页面文件大小当前设置为30gb。有没有办法让ciode块使用更多内存?我还使用DEV-C++,我在C++代码中得到了同样的BADOL OLLC错误。p> 有什么想法吗?提前谢谢。
哦,我使用的是64位windows os 7

查看此页面,了解基于体系结构(x86,64位)和Windows版本的内存限制。提到了一些解决方法:

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


对于msdn页面中提到的大地址感知,在64位Windows系统上默认情况下,它应该处于活动状态。 不过,VisualC++链接器有一个明确的请求:<代码> /大型地址软件< /COD> < /P>

现在,如果你不使用VisualC++链接器,如果你想激活可执行文件的大地址感知:你可以总是使用这个步骤作为额外的步骤:

editbin /LARGEADDRESSAWARE your_executable

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

感谢迄今为止的所有帮助。有一个简单的解决办法。我安装了mingw 64位编译器,将代码块指向该编译器,一切都很顺利。耶

我假设您使用的是32位版本的Windows,在这种情况下,答案是否定的。如果您使用的是64位版本的Windows,您可以构建一个64位二进制文件,以提供对所有系统内存的访问。我使用的是64位Windows os 7。听起来您是针对32位目标编译的。您正使用哪种编译器?您需要创建一个64位程序,以利用64位操作系统上进程可用的大型虚拟内存地址空间。默认情况下,32位进程是使用2gb用户可访问的地址空间创建的,有一种方法可以将默认值增加到3gb。64位的应用程序不应该有这样的限制——正如有人已经提到的,您很可能正在构建一个32位的可执行文件。dev-c++/代码块的解决方法可能是使用ms的ld.exe。哦,对不起,我读得太快了。看起来您可以使用editbin()为编译的二进制文件提供更多内存。看起来我必须下载editbin.exe-这看起来是下载它的好地方吗?也许你可以下载<代码> VisualStudioC++快照版>代码>并安装它(不一定在同一台机器上)。它是免费的,总是可以派上用场,它应该包含<代码> EdgBiel.exe < /Cord>。@ YohanANvin,我在机器上安装了Visual C++快件2010。我从未使用过它,也不知道如何编译程序并使用它运行。谷歌已经想出了一些解决方案。我想我会在这里花一段时间来解决这个问题——除非你有一个你会推荐的资源?非常感谢你的帮助。来自linux的新windows用户。