fehlermeldung:
-
ok, jetzt klappts, nochma danke
-
ist die Methode PingHost von dir ?
wenn ja, erstelltst du in dieser Methode die Stringliste mit new ?
dann machst du es falsch.
wann willste denn das delete machen ?mach so:
TStringList *hmm=new TStringList; int test=PingHost("192.168.1.2", hmm); Label1->Caption=hmm->Text; delete hmm; // wichtig sonst hast du Speicherlöcher....
natürlcih dann das Erstellen der Instanz in der Funktion rausnehmen...
-
genauso hab ich das gemacht, nur ohne das delete.
is das schlimm, wenn ich nicht delete mache?
-
wenn du kein delete machst, bleibt der Arbeitsspeicher für die StringListe reserviert und wird nicht mehr freigegeben. Das bedeutet, dass Windows oder dein Programm diesen reservierten Arbeitsspeicher nicht weiter verwenden kann. Sowas nennt man Speicherlöcher.
Du kannst dir vorstellen, dass irgendwann dein Arbeitsspeicher voll ist, das System anfängt herumzuswapen und irgenwann sich Windows verabschiedet und in den Bytehimmel springt.Und heut hast du schon 2 wichtige Regeln gelernt
1. Variablen immer initialisieren ( auch integer, Strings oder andere Datentypen und nicht nur Pointer)
2. Wo ein new da auch ein delete
-
Um Speicherlöcher in dein Programm aufzudecken kann man CodeGuard benutzen.
-
bleibt der speicher auch reserviert, wenn mein programm beendet ist? das wär ja dann irgendwie blöd...
-
StudentJojo schrieb:
das wär ja dann irgendwie blöd...
du sprichst mir aus der Seele
deshalb die 2.Regel
-
waaaas? das bleibt echt reserviert??? was hat denn da der billy für nen kack programmieren lassen?! das kann ja wohl für ein betriebssystem nich so schwer sein, alle speicherreservierungen von nem programm zu löschen, wenn das programm beendet wird...
-
Java== Tool für Pointer-DAUs
sprich: für Leute, die nicht mit Pointer umgehen können gibt es Java.
-
ich hoffe mal, dass ich das auf die Reihe bekommen werde!
gute nacht!