Custom Stack



  • Hi,

    ich hab mich gerade so gelangweilt durch nen script sprachen forum gelesen und eben folgendes entdeckt was meine aufmerksamkeit erweckt hat.

    Zitat:"To make it look more like drawing than like printing, the script draws black areas using recursion. In big areas this would overflow the call stack, so I use an array as a custom stack."

    Und desshalb wollte ich mal fragen ob man in C++ die Stackgröße selbst bestimmen kann, und wenn dann wie macht man das?



  • Das ist platform/compiler-abhängig und kann normalerweise bei der kompilierung als option angegeben werden.



  • Ich denke eher, er meinte, er würde es iterativ statt rekursiv lösen, d.h. die Bereiche nacheinander durchzugehen. Zumindest folgende Aussage kann ich mir nicht besser erklären (der Stack im eigentlichen Sinne, also der statische Speicherbereich, ist ja weder ein Array noch kann man ihn als solches nutzen):

    ... so I use an array as a custom stack.

    Und "Custom-Stack" tönt für mich schon eher nach Heap 😉



  • hmm.. aber er scheint ja anscheinend sein ding da ( is übrigens von auto it ) gegen nen stack overflow schützen zu wollen. und ich glaube nicht das er was im heap machen würde wenn die funktion dann doch nur den stack belegt. oder kann man diese in den heap auslagern?

    @wurst danke stimmt ^^



  • Schurke schrieb:

    oder kann man diese in den heap auslagern?

    Die Funktion selber natürlich nicht, nur falls da noch Variabeln vorkämten, die Speicherplatz benötigen würden. Ist es in diesem Falle nur die Funktion selber, die die Stackgrösse überschreitet?

    Ach ja, da gibts zu diesem (oder einem ähnlichen) Problem einen Artikel auf Wikipedia:
    http://de.wikipedia.org/wiki/Floodfill

    Und eine Vergrösserung des Stacks ist auch nur eine kurzfristige Lösung, denn wenn du ein grösseres Feld bearbeitest, hast du das Problem wieder. Ich würde mich nach einer flexibleren Lösung umschauen, z.B. Iteration oder Teiliteration (siehe Wikipedia-Artikel).


Log in to reply