Letzter Beitrag der vorhergehenden Seite:
/me bleibt definitiv einfach bei VisualBasic... Hab mich mal ein paar Tage mit C++ rumgeschlagen und habs dann aufgegeben
Damit hast du aber wieder Speicherlecks, wenn das Tool in die Fehlerbehandlung beim Lesen oder Schreiben einer Datei gerät. Dann wird das Programm nämlich mit 'return' beendet, ohne dass der Speicher freigegeben wird (auch die File-Handles werden dann nicht geschlossen).TheSearcher hat geschrieben:Das free(act_filename); gehört in die Umgebung von fclose(output_file);
Ich habe es über diese Zeile gesetzt.
Ein Speicherleck entsteht eigentlich durch folgende Situation. Man weist einer Zeigervariablen einen dynamisch allozierten Speicherbereich zu (also z.B. mit malloc()). Wie jede andere Variable hat diese Zeigervariable einen Gültigkeitsbereich ("Scope"), der - grob gesagt - durch die geschweiften Klammern begrenzt wird, in der die Variable deklariert wurde. Wenn dieser Gültigkeitsbereich verlassen wird, ohne den Speicherbereich vorher freizugeben, dann ist dieser Speicher für das laufende und alle anderen aktiven Programme nicht mehr verwendbar, weil das Betriebssystem diesen Speicher immer noch dem Programm zugeordnet hat. Ohne die Zeigervariable kannst du diesen Bereich aber auch nicht mehr nutzen oder nachträglich freigeben.TheSearcher hat geschrieben:bei Beendigung des Programms wird, wenn ich mich nicht täusche doch sowieso sämtlicher mit malloc allokierter Speicher wieder freigegeben. Oder irre ich mich da? Ich will nicht bezweifeln, dass das Nichtfreigeben des Speichers am Ende ein sehr schlechter Programmierstil ist. Aber führt das zum Speicherleck?
Gewöhnlich erfolgt der Zugriff auf Dateien gepuffert, es wird also ein Abschnitt der Datei in den Speicher geladen, damit man schneller damit arbeiten kann. Wenn dieser Puffer nach einer Änderung nicht wieder in die Datei zurückgeschrieben wird, dann gehen die Änderungen verloren. Das Schließen einer Datei (bzw. dessen File-Handle) sorgt nun dafür, dass die Puffer ordentlich aufgeräumt werden. Für sybdecode könnte sich das so auswirken, dass ein Teil der gerade extrahierten Datei fehlt und diese dadurch unbrauchbar wird.Was passiert, wenn man Filehandles beim Beenden offen lässt, weiß ich nicht.
Du meinst wohl, du hast alle bisher bekannten Bugs beseitigt.Habe aber trotzdem mal alle Bugs beseitigt.
Da merkt man mal wieder sehr gut in der Praxis den Vorteil von Open Source. Wenn ich den Sourcecode für mich auf der Festplatte behalten hätte, wären die Probleme niemandem aufgefallen. Zum Thema Bugmeldungen: ich sehe das eher wie Donald E. Knuth - Wer in seinem Textsatzsystem TeX einen Bug findet, bekommt von ihm einen Scheck über 100 US$ (fairerweise haben ihn jedoch nur wenige tatsächlich eingelöst) - lediglich mit dem Unterschied, dass ich leider kein Geld übrig habe. Von daher bin ich nur dankbar für die Bugreports.Es ist für mich natürlich einfacher, die Arbeit anderer zu korrigieren als es gleich selbst (und dann auch noch richtig) zu machen.Ich meine es auf keinen Fall böse, sondern bin dir im Gegenteil dankbar dafür, dass du das Dateiformat auseinander klamüsert hast.
![]()
´Du meinst wohl, du hast alle bisher bekannten Bugs beseitigt.
Mensch, hättste das mal früher gesagt. Da veröffentlich' ich Idiot einfach die Dateiformate für Tiana und du hättest die so gern geknackt.The Searcher hat geschrieben:Das Auseinandernehmen von bislang undokumentierten Dateiformaten ist sowieso, seit ich in der Zeit zwischen Abitur und Studium aus Langeweile damit begann mit einem Hexeditor zu versuchen, einiges aus den Dateien von "Der Druidenzirkel" zu rippen ein privates Hobby von mir geworden. Von daher hat zumindest das Hacken des Formates sowieso Spaß für mich (das Coden eines passenden Entpackers dafür dann Ehrensache).
*zeigt vorsichtig mal auf http://wiki.cobbs.ca/index.php/Prp_files und dann noch deutlicher auf http://wiki.cobbs.ca/index.php/PrpObjectReference...*TheSearcher hat geschrieben:Das Auseinandernehmen von bislang undokumentierten Dateiformaten ist sowieso, seit ich in der Zeit zwischen Abitur und Studium aus Langeweile damit begann mit einem Hexeditor zu versuchen, einiges aus den Dateien von "Der Druidenzirkel" zu rippen ein privates Hobby von mir geworden. Von daher hat zumindest das Hacken des Formates sowieso Spaß für mich (das Coden eines passenden Entpackers dafür dann Ehrensache).