В однопоточной программе под Linux, стек будет расти автоматически, пока не упадет в область памяти. Обычно это куча, а в 32-битных системах это означает, что у вас может быть несколько ГБ стека.
В многопоточной программе это обычно невозможно, так как стек другого потока будет мешать.
Вы можете контролировать размер стека при создании нового потока, но это, как правило, плохая идея, так как зависит от архитектуры, какой объем стека требуется для задачи.
Это довольно низкоуровневый материал, который в основном контролируется вашей библиотекой C / библиотекой потоков. Возиться на свой страх и риск :))