增加C/C++程序使用的(非堆栈)内存
Increasing (nonstack) memory used by a C/C++ program
我在具有12 GB RAM的windows操作系统上运行一项占用大量内存的作业。根据我的计算,4GB的内存应该足以运行该程序。我正在使用CodeBlocks运行我用动态内存分配编写的程序(我在C和C++中有两个版本的程序,分别是malloc
/free
和new
/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位编译器,将代码块指向该编译器,一切都很顺利。耶。
- 清除在 main() 中分配的堆栈内存?
- C++堆栈内存管理问题
- 为什么不能在 Visual C++ 中动态分配堆栈内存?但海湾合作委员会可以做到
- 使用 static 关键字禁止使用堆栈内存
- 测量静态,堆和堆栈内存?(C ,Linux -CentOS 7)
- 从函数返回变量地址时如何修复"与局部变量关联的堆栈内存地址"?
- c++中变量的堆栈内存分配
- C++ 编译器是否将这种形式的"new"视为堆栈内存?
- 堆栈内存错误创建核心文件
- 类堆栈内存问题(致命错误)
- 返回的与局部变量关联的堆栈内存的地址 (C++)
- 一个程序将分配多少堆栈内存
- 具有类作用域的动态分配堆栈内存
- 动态内存、堆栈内存和静态内存与c++中的区别
- 是我的堆栈内存空间膨胀
- 为什么堆栈内存的 memcpy 比堆内存快得多
- 找出哪个对象/数组使用最多的堆栈内存
- 堆栈内存/堆栈
- 为什么堆栈内存大小如此有限
- 处理分配的内存和堆栈内存