Это в значительной степени зависит от того, какая у вас архитектура (32- или 64-разрядная) и многопоточная или нет.
По умолчанию в однопоточном процессе, то есть в главном потоке, созданном ОС во время exec (), ваш стек обычно будет расти, пока не достигнет чего-то другого в адресном пространстве. Это означает, что на 32-битном компьютере, как правило, можно иметь, скажем, 1G стека.
Однако, это определенно НЕ тот случай в многопоточном 32-битном процессе. В многопоточных процессах стеки совместно используют адресное пространство и, следовательно, должны быть распределены, поэтому они обычно получают небольшой объем адресного пространства (например, 1 МБ), так что можно создавать множество потоков без исчерпания адресного пространства.
Таким образом, в многопоточном процессе он небольшой и конечный, а в однопоточном - в основном до тех пор, пока вы не столкнетесь с чем-то другим в адресном пространстве (что механизм распределения по умолчанию пытается гарантировать, что это не произойдет слишком скоро). 1007 *
В 64-битной машине, конечно, гораздо больше адресного пространства для игры.
В любом случае вы всегда можете исчерпать виртуальную память, в этом случае вы получите SIGBUS или SIGSEGV или что-то еще.