Rekursive Funktionen werden wo abgelegt?
-
Werden rekursive Funktionen auf dem Stack oder auf dem Heap abgelegt! Normale Funktionen werden auf den Stack gelegt oder? Wie sieht es jetzt eben mit rekursiven Funktionen aus?
-
Eine Funktion wird nie auf dem Stack abgelegt. Vereinfacht: Lediglich die Parameter und der Instruction Pointer werden auf dem Stack abgelegt. Bei rekursiven Funktionen ist das natürlich genauso.
Der Heap spielt hierbei keine Rolle.
-
Die Variablen innerhalb einer Funktion werden aber auch auf dem Stack abgelegt oder? Nicht nur die Parameter
-
Richtig.
-
wo kann man etwas ueber die funktionesweise und das speichermanagment und die ausfuehrung eines programmes lesen?
-
In der Doku deines Betriebssystems - bzw. in Büchern/Artikeln/... über dein Betriebssystem.
-
Die Funktionen liegen definitiv im Heap, und zwar da wo das Programm sitzt...
Da eine rekursive Funktion aus sich wiederholenden Function-Calls besteht, werden die Rücksprungpunkte im Stack abgelegt. das bedeutet aber bei erinem normalen Stack-Segment, dass man für FAR - CALLS maxsimal 16384 (theoretisch) Aufrufe schafft.
Naja, soviel ist nicht oft nötig.Dies sind übrigens Angaben aus DOS-Zeiten. Wirus ist da glaub ich nicht auf 64K-Segmente begrenzt was den Stack angeht.. (weiß ich aber nicht genau)
-
DocJunioR schrieb:
Die Funktionen liegen definitiv im Heap, und zwar da wo das Programm sitzt...
Das Programm sitzt aber nicht im Heap. Der Heap ist das, was malloc&co. verwalten.