Alle Globalen, Lokalen und Klassen Variablen...
-
Hallo!!
Also, da ich ja noch nicht sonderlich C++ fähig bin, möchte ich gerne wissen, ob ich mit meinen Klassen in einem Programm, das ich irgendwann beende und dann wieder neu starte möglicherweise Speicherleichen verursache!?
Es werden eine Menge protected Variablen geschrieben und geändert.
Oder werden die Speicherinhalte wieder freigegeben, wenn ich die Konsolenanwendung beim nächsten mal starte?
UND:
Wie wird ein Programm mit microsoft visual c/c++ so geschrieben, dass es kein Fenster öffnet? Ich wollte es stets im Hintergrund laufen lassen, im Vordergrund muss ein anderes Programm laufen...
DANKE!!
-
Mr. T schrieb:
Hallo!!
Also, da ich ja noch nicht sonderlich C++ fähig bin, möchte ich gerne wissen, ob ich mit meinen Klassen in einem Programm, das ich irgendwann beende und dann wieder neu starte möglicherweise Speicherleichen verursache!?
Du meinst wohl eher Objekte. Objekt != Klasse.
Wenn du nicht mit Pointern arbeitest, dann wird jedes Objekt automatisch zerstört, wenn der Scope, in dem es definiert wurde, verlassen wird.Es werden eine Menge protected Variablen geschrieben und geändert.
Der Zugriffsschutz und die Änderungne haben damit nichts zu tun.
Oder werden die Speicherinhalte wieder freigegeben, wenn ich die Konsolenanwendung beim nächsten mal starte?
Wenn dein Programm beendet ist dann kannst du davon ausgehen, dass das BS den kompletten Speicher für den Prozess wieder freigibt.
-
Mr. T schrieb:
Also, da ich ja noch nicht sonderlich C++ fähig bin, möchte ich gerne wissen, ob ich mit meinen Klassen in einem Programm, das ich irgendwann beende und dann wieder neu starte möglicherweise Speicherleichen verursache!?
Wenn du nicht aufpasst, dann kannst du natürlich Speicherlecks verursachen ("it's not an error, it is a feature"
). Moderne BS sind aber in der Lage, solche Unzulänglichkeiten des Programmierers auszugleichen. Dh über "verlorenen" Speicher brauchst du dir keine Sorgen machen. Was aber nicht heissen sollen, dass du kein sauberes Ressourcenhandling implementieren sollst. Normale Variablen, zB
int a;
werden automatisch wieder freigegeben beim Verlassen des Gültigkeitsbereiches.
Dynamisch reservierter Speicher
int* b = new int;
muss hingegen auch wieder freigegeben werden.
delete b;
Das gleiche mit dynamischen Arrays
int* c = new int[100]; //... delete[] c;
Mr. T schrieb:
Wie wird ein Programm mit microsoft visual c/c++ so geschrieben, dass es kein Fenster öffnet? Ich wollte es stets im Hintergrund laufen lassen, im Vordergrund muss ein anderes Programm laufen...
Beim Starten eines Konsolenprogramms kann man afair verhindern, dass das Konsolenfenster geöffnet wird. Dazu findest du aber im Win32 Konsolenforum sicherlich mehr Infos. Ansonsten kannst du auch eine GUI Anwendung erstellen (
WinMain), erzeugst ein Fenster und den windows-typischen Message-Loop, zeigst aber das Fenster nicht an.