Увеличить размер стека при компиляции с помощью mingw?
Я пишу рекурсивный алгоритм flood-fill для поиска связанных компонентов в образе, мой код компилируется и хорошо работает с компилятором MSVC 2008; но скомпилированный MinGW двоичный файл разбился во время выполнения.
После того, как я преобразовал алгоритм в нерекурсивный с помощью std::stack, все идет хорошо.
Но что, если я должен использовать рекурсивный алгоритм в некотором случае, и mingw не может справиться с ним?
Как я могу увеличить размер стека двоичного файла, есть ли компиляция варианты?
Спасибо
3 ответа:
Вероятно, лучше всего использовать
pthreads
для запуска нового потока и запуска вашего алгоритма в новом потоке. Одним из параметров дляpthread_create
являетсяpthread_attr_t
. С помощью этого атрибута можно указать размер стека (вызываяpthread_attr_setstacksize
).Edit: будет ли это работать или нет, зависит от поддержки базового уровня совместимости
Возможно, увеличение размера стека-это не то решение, которое вы хотите. Эти ограничения существуют не просто так. Также может случиться так, что в ближайшем будущем ваш алгоритм будет использовать еще больше стекового пространства, и вам придется снова увеличить его.
Возможно, вам следует рассмотреть возможность преобразования вашего алгоритма в нерекурсивный. Это можно сделать для любого алгоритма. см. это обсуждение
И вы, вероятно, получите улучшение производительности также