Method Delete() funktioniert nicht mehr?
Übersicht

![]() |
ArtemisBetreff: Method Delete() funktioniert nicht mehr? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry Jungs, hab ich was verpasst, oder warum funktioniert folgender Code nicht mehr wie gewünscht (aktuelles SVN-BlitzMax):
Code: [AUSKLAPPEN] SuperStrict
Type test Method New() Print "new" EndMethod Method Delete() Print "delete" EndMethod EndType Local t:test = New test t = Null Eigentlich sollte die Methode Delete doch am Ende aufgerufen werden, wird sie aber nicht. |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst danach noch den Garbage Collector mit GCCollect aufrufen. | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alles klar, aber warum ruft Blitz nicht am beim Beenden den GC selber noch einmal auf?
So ist es also am besten, wenn ich am Anfang OnEnd(GCCollect) aufrufe. |
||
![]() |
Suco-XBetreff: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe immer gedacht der ganze Datenmüll eines Programms wird nach dem beenden sowieso automatisch vom Betriebssystem entfernt, wieso also die Mühe machen und zweimal kehren?
Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe eine externe Bibliothek in C, welche ich in BlitzMax wrappe.
Jetzt sieht meine Klasse quasi so aus: Der Pointer zeigt auf das C struct. Code: [AUSKLAPPEN] Type TITDB
Field pointer:Byte Ptr Method Delete() If Self.pointer Then bmx_itdb_free(Self.pointer) Self.pointer = Null EndIf EndMethod EndType Das mache ich, damit man sich nicht selber um das "freen" der externen Ressourcen kümmern muss, sondern das Verhalten dem BlitzMax-Verhalten entspricht. Wenn das jetzt aber nicht aufgerufen wird, kann es sein, dass in der externen Bibliothek nicht alles sauber beendet wird. |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach eine FreeAll-Funktion die alle instanzen durch geht und in jeder eine Free-Methode aufruft, die entsprechend aufräumt. Diese Freeall packst du dann nach OnEnd. | ||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann müsste ich ja in einer Liste alle Instanzen noch einmal referenzieren.
Spricht denn etwas gegen meine Method einfach GCCollect in OnEnd zu packen, denn dann läuft es ja so, wie es soll? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group