Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi speicherfreigabe im debug modus (https://www.delphipraxis.net/78002-speicherfreigabe-im-debug-modus.html)

edelfred 27. Sep 2006 21:36


speicherfreigabe im debug modus
 
Hallo zusammen,
ich habe ein kleines Probrlem, dass immer wieder zu Abstürzen meines PC führt.
Ich versuche grosse Datenmengen zu bewältigen und hierfür benötige ich Speicherplatz im Rechner.
Den stelle ich mit heapalloc und heapcreate zur Verfügung. Am Ende des programmes räume ich den Speicherplatz wieder frei mit heapfree und heapdestroy.
Das funzt auch alles prima.
problematisch wirds nur, wenn aufgrund irgendwelcher Veränderungen mit der Rechner mit einer Fehlermeldung anhält bzw. im Debug Modus stoppt und ich den debugmodus abbrechen muss.
Anschliessend habe ich immer merkwürdige fehlermeldungen.
Meine Frage. Kann ich auch Fehlermeldungen im derart abfangen, dass ich vor beenden noch Code ausführen kann. Oder allgemein? wie kann ich anders vorgehen um den speicherplatz immer wieder freizuräumen?

Besten Dank für alle Antworten, bin noch relativ neu " anne Programmieren" :coder:

Bernhard Geyer 27. Sep 2006 21:45

Re: speicherfreigabe im debug modus
 
Wie wäre es mit try ... finally?

// Mem-Alloc
try
// Aktionen zu zu exception führen können
finally
// Speicher-Freigabe
end;

Die Frag die sich mir stellt wieso du direkt Heap-Speicher anforderst? Gibt es dafür einen Grund?

edelfred 27. Sep 2006 22:11

Re: speicherfreigabe im debug modus
 
Hallo Bernhard,
nun, ich benötige einen Daten Buffer einer bestimmten Länge, der beschrieben wird. Bei Überlauf werden die Daten wieder an den Anfang des Buffers geschrieben (typische Messkarte). bei bestimmten events werden die Dtaen aus diesem Buffer in einen weiteren Buffer übetragen.
Nun, ich dachte mir, schaue ich mal, wie ich Speicherplatz für die Buffer freiräumen kann. Dann bin ich in der Hilf fündig geworden mit den oben genannten Befehlen.
Gibt es Haken an der Sache? Gibt es Alternativen? Wie gesagt, prinzipiell funktioniert es ja, bis auf die Fehlerfälle.
P.S.: Besten Dank für den tipp mit try finally, wobei ich nicht weiss, ob mir das etwas bringt: Ich müsste ja jeden Befehl zwischen Speicherreservierung und -Freigabe mit try..finally begleiten, um im fehlerfall den Speicher wierde freizugeben....oder verstehe ich da etwas falsch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz