Es gibt da einen Garbage-Collector (zumindest in Java)
Die sorgt dafür, daß "Datenleichen" also Objekte und Variablen, die im
Speicher sind, aber auf die es innerhalb des Programmes keine Refernz,
also keinen Zeiger mehr gibt gelöscht werden.
Dies kann auftreten, wenn man einen Zeiger auf eine Variable oder einen
Speicherbereich bestimmt hat und diesen aber nachher wieder wo anders
hinzeigen lässt. Das ist bei Java so.
Bei C++ muß man, soweit ich weiß, selber den Speicher wieder freigeben.
ABER
Wenn Du nun beispielsweise eine Variable wie Integer oder Real innerhalb
einer IF-Anweisung ins Leben ruft, also sie dort erstellst, dann geht diese
Variable wieder verloren, wenn das Programm diese IF-Anweisung wieder
verlässt.
Es ist wie eine Zwiebel.
Ein Programm ist verschachtelt, jede Verzweigung , jede
Schleife erstellt eine neue Schachtel oder Hülle.
Und aus der innersten Schachtel oder Hülle kannst Du eigentlich
auf alle Variablen der Umgebenden zugreifen.
Dies nennt man eigentlich Verkapselung.
Aber man kann nie auf eine Variable zugreifen, die weiter innen
in einer Schale erstellt/initialisiert/deklariert wurde.
Ich gebe Dir hierzu folgende Schlagworte:
Globale Variablen , Lokale Variablen.
| Zitat: |
main
erstelle neue Variable Y = "keine ahnung"
if (schönes Wetter) {
| Zitat: |
| erstelle neue Variable X = "sonnencreme" |
}
else
{
| Zitat: |
| setze bestehende Variable Y = "regenschirm" |
}
|
In dem Pseudocode* oben siehst Du ein kleines Beispiel dazu.
Anhand der Zitatboxen siehst du die Verkapselung.
Wenn schönes Wetter ist, soll sonnencreme rauskommen,
ansonsten regenschirm.
Nur dumm, daß dieses Programm nur bei schlechtwetter funktioniert.
denn nach der IF-Konstruktion vergisst er die dort lokal erstellte
Variable X wieder und der arme Anwender wird ohne Sonnenschutz
ins Freie gehen.
Da Variable Y bereits vor der IF-Konstruktion existierte, wird innerhalb
dieser nur ein anderer Wert in sie hineingeschrieben, und der
bleibt bestehen.
*Pseudocode : Dieses Wort bezeichnet eine erfundene Programmiersprache, die
es eigentlich gar nicht gibt und nur zu Anschauungszwecken verwendet wird.
Es geht dabei nur darum, gewisse Aspekte herauszuheben, um etwas
zu verdeutlichen. Ich hatte damals große Probleme mit einzelnen Ausdrücken,
und Pseudocode was etwas, was ich gar nicht verstand. Es ist eigentlich nicht
anderes, als eine vereinfachte Darstellung einer Programmiersprache die man
nur zum Verständnisstiften benutzt, also ohne die lästigen Kommas,
Doppelpunkte und Strichpunkte ...
für später:
Wenn Du Dein Programm weiter unterteilst in Abschnitte,
also Funktionen oder Prozeduren, Units, Klassen, Objektklassen, methoden und
wie das ganze Zeug in unterschiedlichen Programmiersprachen heißt,
dann kann man auch von denen heraus üblicherweise nicht mehr auf die
äußere Hülle zugreifen. Dabei wirst Du früher oder später die Macht von
Zeigern erfahren, wo nicht die Variable sondern nur ein Link darauf
im Speicher weitergegeben wird, eine Referenz, eine Ortsangabe in den
Untiefen des Arbeitsspeichers...
Der große Vorteil von C++ ist aber, daß man Variablen nach belieben
selbst in Speicher ablegen kann und von überall, sogar mit anderen Programmen,
wenn man schlau ist, darauf zugreifen kann, aber das ist ein Kapitel,
das schon sehr speziell ist und auch einiges Wissen über die Kontrollstrukturen
bzw. Speicherverwaltung des Betriebssystems vorraussetzt.
Na, ich hoffe, ich hab da jetzt nicht allzuviel geschrieben, und nichts Falsches.