title image


Smiley Re: Rekursion - Zu wenig Arbeitsspeicher? 2 GB!!!!
Hi,



ich hab mir den Code jetzt noch nicht genauer angeschaut.

Die Fehlermeldung ist aber typisch dafür, wenn in Deiner Rekursion die Abbruchbedingung nicht erfüllt wird und die Rekursion somit sozusagen in einer Endlosschleife läuft.



In Deinem heißt das vermutlich, dass Du immer Elemente in Deinen XMLNodes findest.



Der Speicher wird immer erst freigegeben, wenn alle Aufrufe abgearbeitet sind.

Du steigst ja in die Funktion ein, die sich wiederrum selber auffruft:



Aufruf 1

Aufruf 2

Aufruf 3

...





Erst wenn in diesem Beispiel der dritte Funktionsaufruf komplett abgearbeitet ist, die Funktion sich also selber nicht mehr aufruft, wird der zweite Aufruf abgearbeitet. (Aufruf 1 wartet auf Aufruf 2, Aufruf 2 wartet auf Aufruf 3)



Daher empfiehlt es sich bei Rekursionen immer einen Tiefenzähler mit zu führen.



Also so zum Beispiel:





function createtree(rootnode, counter)

counter = counter + 1

if counter > 1000 then 'die grenze kannst du selbstverständlich anpassen

'abbruch wegen zu vieler aufrufe

exit function

end if



'restlicher code



call createtree(xxx, counter)

end function





Wenn die Funktion dann aussteigt, solltest Du eventuell auch erkennen, warum die Rekursion ewig weiterläuft.



Ich hoffe, das hilft Dir bei Deiner Fehleranalyse weiter.



Greets,

Twiddle

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: