Bug im Destruktor
Übersicht

![]() |
VertexBetreff: Bug im Destruktor |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Strict
Type TEntity Global List : TList Method New() Print "Ich bin neu hier!" TEntity.List.AddLast(Self) End Method Method Delete() Print "Ich muss weg!" TEntity.List.Remove(Self) End Method End Type TEntity.List = CreateList() Local MyEntity:TEntity = New TEntity MyEntity = Null FlushMem() Hier wird nie "Ich muss weg!" ausgegeben. Komischerweise geht es aber bei: Code: [AUSKLAPPEN] Method Delete()
Print "Ich muss weg!" End Method Unwarscheinlich das der Fehler bei mir liegt ?oder mfg olli Edit: TEntity.List.Remove(Self) wird ebenfalls nie ausgeführt |
||
vertex.dreamfall.at | GitHub |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich vermute die zweite Fassung enthält auch ein New ohne die Liste?!
Denn wenn du es zur Liste hinzufügst kann es NIE freigegeben werden, solange es nicht aus der Liste entfernt wurde, da dort immer noch eine Referenz besteht. Sprich du musst dir dazu eine Destroy Methode schreiben, die die Entity aus der Liste nimmt, bevor du sie = Null setzt. *Der Destruktor wird ja aufgerufen, wenn die Instanz vom GarbageCollector freigegeben wird, was nur eintritt, wenn die Instanz nirgends mehr referenziert ist, also auch nicht in der eigenen TypeList* |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bähh, da denkt man, man macht es sich über den Destruktor einfach, aber nee ![]() Hmm dann arbeite ich event. mit Register und UnRegister oder so. Bringt mal wieder meine ganze Planung durcheinander. Dennoch danke! mfg olli |
||
vertex.dreamfall.at | GitHub |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group