Если это однопоточный стандартный тип программы, ограничение размера стека - это всего лишь мера предосторожности. Это не даст бесконечной рекурсии съесть всю вашу память, прежде чем она умрет. Установив ограничение на неограниченное количество, вы сможете продолжать выделять в стеке до тех пор, пока оно не затоптает кучу.
В классической моде Unix куча и стек начинаются с противоположных сторон пространства памяти и распределяются друг к другу, то есть одна растет, а другая уменьшается. Когда они попадут, вы не получите ошибку, вы просто перезапишете данные, пока не произойдет что-то плохое.
Как правило, вам не нужен большой стек, но выделение больших объектов в стеке или глубокая рекурсия могут быть проблемой для некоторых программ, тогда им нужен больший стек.
Редактировать: Просто чтобы добавить к вопросу о том, чтобы быть однопоточным. В многопоточных программах вам нужно выделить более одного стека. Такого рода путаница растёт с обоих концов к среднему подходу. В этом случае стеки выделяются в чанках max-stack-size-ish со стороны стека пространства памяти. Затем, когда вы разрываете свой стек, вы попираете стек другого потока. В зависимости от вашей архитектуры, вы можете добавить некоторую защиту страницы, чтобы ограничить это, но на данный момент это, вероятно, TMI; -)