Максимальный размер стека функций в C (GCC) - PullRequest
1 голос
/ 11 октября 2009

Я хочу знать, какое максимальное количество (рекурсивных) вызовов функций разрешено в gcc C. У меня есть программа, которая может принимать глубину стека 400000 вызовов функций, каждый из которых имеет размер около 200 байтов (т.е. около 80 МБ). Как я могу увеличить максимальную глубину?

Ответы [ 2 ]

8 голосов
/ 11 октября 2009

Ограничение стека накладывается не компилятором, а операционной системой. В Unix вы можете попробовать использовать ulimit (1), чтобы увеличить его.

3 голосов
/ 11 октября 2009

Я бы порекомендовал переписать подпрограмму в итерационный алгоритм. Хотя это нетривиально, преобразование алгоритма должно быть простым и избавит вас от необходимости иметь дело с такими ограничениями ресурсов (которые, я бы предположил, сильно различаются в зависимости от архитектуры, платформы, деталей компьютера и т. Д.)

Также обратите внимание: все рекурсивные алгоритмы могут быть написаны итеративно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...