如何增加堆栈/堆上分配的最大内存

Com*_*erd 19 c++ memory

  • 如何在C++中增加程序堆栈/堆上分配的最大内存?

  • 增加计算机的RAM会自动增加计算机程序的堆栈/堆内存吗?

VeL*_*err 9

在Visual C++中,您可以使用指令#pragma.例如:

#pragma comment(linker, "/STACK:2000000")
#pragma comment(linker, "/HEAP:2000000")
Run Code Online (Sandbox Code Playgroud)


Jos*_*sey 6

第二次编辑:我从你的评论中看到你在Windows中工作,所以我在下面的Unix答案对你没有多大帮助.但请参阅使用Visual StudioC/C++ 确定堆栈空间最大堆栈大小的程序.

在Linux中,堆栈大小通常是有限的.命令ulimit -s将以Kbytes为单位给出当前值.您可以(通常)更改文件/etc/security/limits.conf中的默认值.

您还可以根据权限使用每个进程更改它setrlimit().例如,参见Segmentation故障的回答:当bufffer> 4M时,在Ubuntu的C程序中进行堆栈分配.

对于,请参阅例如C中的堆大小限制.但我不相信你可以增加或减少最大尺寸.


Mat*_*att 5

您可以使用Visual Studio中的链接选项/堆和/堆栈指定保留的堆大小和堆栈大小.有关详细信息,请查看以下MSDN文章:

  1. 堆分配
  2. 堆栈分配