Quote:
Originally Posted by Moneypulation
oder String.ToLower :awesome:
Hab mal ne kleine Frage. Wenn ich in einer Funktion ein int i = 0; initialisiere, was passiert dann wenn ich die Funktion öfters aufrufe? Habe ich dann in der Laufzeit mehrere Variablen im Speicher oder werden locale Variablen nach der Funktion wieder "gelöscht"?
|
Funktionen werden von compilern als unterprogramme realisiert welche so zu sagen ihren eigenen Stack haben. Bei Aufruf wird der Speicher auf den Stack gepusht, beim verlassen wird dieser komplette Bereich wieder gelöscht
Ein schönes C Beispiel welches das veranschaulicht:
Code:
void foo() {
int i;
i = 5;
}
void bar() {
int i;
printf("%d", i);
}
void main() {
foo();
bar();
}
das ganze würde dann 5 ausgeben, da die erste Funktion auf dem Stack eine Variable erzeugt, dann der Speicher freigegeben wird, und dann die nächste Funktion, mit der Selben Speicherbelegung auf der selben Stelle im Speicher initialisiert wird, und somit ist i genau das i von vorher