7
votes

Augmenter la taille de la pile lors de la compilation avec Mingw?

J'écris un algorithme de remplissage d'inondation récursif pour trouver des composants connectés dans une image, mon code compile et fonctionne bien avec le compilateur MSVC 2008; Mais le binaire compilé Mingw s'est écrasé au moment de l'exécution.

Après avoir converti l'algorithme en non récursif avec STD :: Stack, tout va bien.

Mais si je dois utiliser un algorithme récursif dans certains cas, et MINGW ne peut pas le gérer?

Comment puis-je augmenter la taille de la pile d'un binaire, existe-t-il des options de compilation?

merci


1 commentaires

Aussi: utilisez un Scanline Remplissage des inondations. Cela n'exige généralement pas que beaucoup d'espace de pile. Aussi: utilisez votre propre pile et faites votre fonction itérative.


3 Réponses :


0
votes

Probablement le meilleur pari est d'utiliser pthreads pour lancer un nouveau thread et exécuter votre algorithme dans le nouveau fil. L'un des paramètres à pthread_create est pthread_attr_t . Utilisation de cet attribut, vous pouvez spécifier la taille de la pile (en appelant pthread_attr_setstacksize ).

edit: si cela fonctionne ou non dépend de la prise en charge de la couche de compatibilité sous-jacente


0 commentaires

14
votes

Utilisez xxx

où n est la taille de la pile. Par exemple. GCC -WL, - Pile, 4194304


0 commentaires

1
votes

Peut augmenter la taille de la pile n'est pas la solution que vous voulez. Ces restrictions existent pour une raison. Il peut également arriver que dans un avenir proche, votre algorithme utilisera encore plus d'espace de pile et vous devrez l'augmenter à nouveau.

Peut-être que vous devriez envisager de convertir votre algorithme en une non récursive. Cela peut être fait pour chaque algorithme. Voir cette discussion

Et vous gagnerez probablement une amélioration de la performance également


0 commentaires