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

Increasing (nonstack) memory used by a C/C++ program

本文关键字:堆栈 内存 C++ 程序 增加      更新时间:2023-10-16

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

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

有什么想法吗?提前谢谢。哦,我用的是64位Windows7。

查看此页面,了解基于体系结构(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工具)

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