я пишу рекурсивный алгоритм заливки, чтобы найти связанные компоненты в изображении, мой код компилируется и хорошо работает с компилятором MSVC 2008; но двоичный файл, скомпилированный mingw, потерпел крах во время выполнения.
После того, как я преобразовал алгоритм в нерекурсивный с помощью std :: stack, все идет хорошо.
Но что, если я должен использовать рекурсивный алгоритм в некоторых случаях, а mingw не может справиться?
Как я могу увеличить размер стека двоичного файла, Есть ли варианты компиляции?
Спасибо
Используйте
gcc -Wl,--stack,N
, где N — размер стека. Например. gcc -Wl,--stack,4194304
, вероятно, лучше всего использовать pthreads
для запуска нового потока и запуска вашего алгоритма в новом потоке. Один из параметров pthread_create
- pthread_attr_t
. Используя этот атрибут, вы можете указать размер стека (вызвав pthread_attr_setstacksize
).
Изменить: Работает это или нет, зависит от поддержки нижележащего уровня совместимости