Как увеличить размер стека при компиляции с помощью mingw?

я пишу рекурсивный алгоритм заливки, чтобы найти связанные компоненты в изображении, мой код компилируется и хорошо работает с компилятором MSVC 2008; но двоичный файл, скомпилированный mingw, потерпел крах во время выполнения.

После того, как я преобразовал алгоритм в нерекурсивный с помощью std :: stack, все идет хорошо.

Но что, если я должен использовать рекурсивный алгоритм в некоторых случаях, а mingw не может справиться?

Как я могу увеличить размер стека двоичного файла, Есть ли варианты компиляции?

Спасибо

7
задан shader 24 August 2010 в 14:43
поделиться

2 ответа

Используйте

gcc -Wl,--stack,N

, где N — размер стека. Например. gcc -Wl,--stack,4194304

14
ответ дан 6 December 2019 в 15:16
поделиться

, вероятно, лучше всего использовать pthreads для запуска нового потока и запуска вашего алгоритма в новом потоке. Один из параметров pthread_create - pthread_attr_t . Используя этот атрибут, вы можете указать размер стека (вызвав pthread_attr_setstacksize ).

Изменить: Работает это или нет, зависит от поддержки нижележащего уровня совместимости

0
ответ дан 6 December 2019 в 15:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: