Linux 32位计算机上程序的堆栈分配限制

kal*_*kal 1 c++ compiler-construction

在C++中,在编译器放弃之前,堆栈段可以增长多少,并说它不能为堆栈分配更多内存.

在linux(fedora)32位机器上使用gcc.

Ale*_*dru 10

在UNIX下,如果您正在运行bash run

$ ulimit -a
Run Code Online (Sandbox Code Playgroud)

它将列出各种限制,包括堆栈大小.我的是8192kb.您可以使用ulimit更改限制.

此外,您可以使用ulimit()函数从程序中设置各种限制.

$ man 3 ulimit
Run Code Online (Sandbox Code Playgroud)

在Windows下,请参阅StackReserveSizeStackCommitSize

实际上,堆栈地址从高地址开始(在32位平台上,接近3GB限制),并在内存分配从低地址开始时减少.这允许堆栈和内存增长,直到整个内存耗尽.