bobobo hat geschrieben:Gosubs und Proceduren werden vom Programm aufgerufen und demnach
auch initialisiert und beim Beenden (spätestens mit End) freigegeben.
Nur Threads könnten unter Umständen Probleme bereiten.
Naja, naja...
Gosubs sind nichts anderes als Umleitungen. Die Programmausführung wird an einer anderen Stelle/Zeile im Programm forgesetzt und dann geht's wieder zurück. Da gibt's nichts zu de-initialiseren.
Prozeduren werden beim Verlassen automatisch deinitialisiert, Variablen werden z. B. entweder gelöscht und bei erneutem Prozeduraufruf neu definiert. Deswegen sollte man ja auch
Protected benutzen. Ich finds immer wieder sch... äh... schön verwunderlich, wenn die Coder hier in ihren Prozeduren starre IDs vergeben und
nicht EnableExplicit-konform arbeiten. Ts, ts, ts...
Threads werden, wenn sie sich beenden auch automatisch freigegeben. Ausnahme: Der Thread wird mit
KillThread() beendet. Wie auch in der Hilfe steht, hat der Thread in diesem Fall keine Chance, sich selbst zu beenden. Initialisertes Zeug bleibt also im Speicher. Daher sollte man Threads lieber per Flags oder per
ProcedureReturn beenden.
@ scholly:
Was willst du bei Bedarf denn noch freigeben? Ressourcen wie Dateien, Bilde,r etc. oder Prozeduren und Gosubs? Letzteres kannst du nicht freigeben, siehe oben.
Wie gesagt, ordentliche Programmeirer vergessen keine FreeXXX Befehle. Übrigens kann man zum freigeben und gleichzeitig neu belegen einer ID auch folgendes tun:
Code: Alles auswählen
CreateFile(1, "C:\test.txt") ; Erstellen einer Datei mit der ID 1
WrtieString(1, "Hallo Welt") ; was reinschreiben
ReadFile(1, "C:\test.txt") ; Da ReadFile die gleiche ID wie CreateFile hat, wird CreateFile AUTOMATISCH geschlossen und freigegeben
Debug ReadString(1)
; Auf CloseFile verzichten, wird an dieser Stelle autom. erledigt
Das Verfahren, wie man eine Ressource schließt/freigibt und gleichzeitg eine neue Ressource erstellt/öffnet/läd, wird auch so in der HIlfe beschrieben. Ich habe es hier anhand von Dateien demonstriert. Das gleiche Verfahren funktioniert aber auch mit Bildern, Sprites, Texturen, usw...