Variable Vernichten

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Daniel Knobe

Betreff: Variable Vernichten

BeitragMo, Jan 02, 2006 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
habe mir ne kleine IngameGui gecodet, komplett OOP.
Nun wollte ich sie für mein RPG was schon relativ fortgeschritten damit umbauen um den Gesamten Code übersichtlicher zu gestallten.

Einen Button erstellt man beispielsweise wie folgt:
Local Button1:Button = New Button
Button1.DefaultSettings()
Button1.SetX(50)
Button1.SetText("Button1")

Nun will ich aber diesen Button zerstören. Hatte mir gedacht mit Delete weil das auch vom Editor "gehighlightet" wird. Naja nur dummerweise hab ich heute zum ersten mal die Hilfe zu diesem Befehl geöffnet:

Rem
Reserved for future expansions.
End Rem

Kennt jemand einen Weg trotzdem ein Object zu zerstören???

mfg
DKing

Jan_

Ehemaliger Admin

BeitragMo, Jan 02, 2006 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
blub=null

ODER

relase blub
between angels and insects
 

Daniel Knobe

BeitragMo, Jan 02, 2006 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
release geht net weil as Objekt keine integer Variable ist.
aber Button1=null leuft Smile

Danke

TheShadow

Moderator

BeitragMo, Jan 02, 2006 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
leider hat man dir vergessen zu sagen, dass es keine garantie dafür gibt, dass es auch gelöscht wurde.

wenn mehrere type-variablen zu einem objekt linken, dann musst du immer alle DIESE type-variablen auf null setzen, ansonsten bleibt es bestehen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Daniel Knobe

BeitragMo, Jan 02, 2006 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist dann aber total dumm geregelt :/
Hoffen wir mal das nach nem Update, das schlüsselwort delete die bedeutung kriegt die ich hoffe Smile

mfg
DKing
 

Dreamora

BeitragMo, Jan 02, 2006 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist intelligent geregelt.
Das System entfernt automatisch, was nicht mehr gebraucht wird.
Solange du also noch eine Referenz auf ein Objekt hast, darf es logischerweise nicht entfernt werden ...

Wenn du es also loswerden willst, wirst du logischerweise auch voraussetzen, dass es nirgends mehr gebraucht wird, und somit dürfte auch keine Referenz auf das Objekt mehr bestehen.
Wenn doch, dann ist einfach dein Design fehlerhaft ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Daniel Knobe

BeitragMo, Jan 02, 2006 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Also hat BMax praktisch einen Garbage Collector?
Schade find es besser wenn man den Speicher selber wieder freigeben muss :/
Aber damit kann ich leben Smile

mfg
DKing

Artemis

BeitragMo, Jan 02, 2006 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst den GC auch ausschalten.
Dazu siehe:
GCSetMode
und
GCCollect
 

Daniel Knobe

BeitragMo, Jan 02, 2006 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm das ist sehr praktisch das man auswählen kann ob er läuft oder nicht Smile
Ich wusste seit gestern nicht mal das es ihn gibt Very Happy
Wunderbar.
Danke!

mfg
DKing
 

Dreamora

BeitragDi, Jan 03, 2006 2:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Da hast du wohl leider was falsch verstanden.
Laufen tut der GC immer. Der kann nicht deaktiviert werden.

Du kannst lediglich die automatik für den "unused collect" deaktivieren und manuell mittels GCCollect dem GC befehlen, dass er alles nicht mehr genutzte freigeben soll (dadurch wird jedoch nicht der reservierte Speicher freigegeben! Das tut der GC nach eigenem ermessen um einen speedeinbruch durch ständiges allozieren / de-allozieren von speicher zu vermeiden).
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheShadow

Moderator

BeitragDi, Jan 03, 2006 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie ich verstanden habe, wird es Delete in früherer Form nicht geben - und zwar weil es mehr Speicher benötigt und alle Types verlangsamen würde...

Ich persönlich bin ein großer Fan von früheren Delete - und es ist schade, dass es nicht mehr gibt... Aber mit Auto-GC hat sich wirklich alles zum besseren gewendet so, dass ich an sich auch so noch gut leben kann...

ohne Auto-GC war es einfach nur furchtbar... da habe ich in jede denkbare Funktion und in alle möglichen Schleifen Free-Funktion eingebaut - und es war nie genug, da immer mehr Speicher benutzt wurde, als nötig. Erst mit Auto-GC laufen die Progs wirklich schneller und sind schlanker im Speicherverbrauch... Das merkt man hauptsächlich, wenn man mit vielen großen Strings arbeitet.
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Dreamora

BeitragDi, Jan 03, 2006 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja obs bei Strings nicht auch mit den entfernten String Mem Leaks zu tun hat Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

bruZard

BeitragDi, Jan 03, 2006 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
@TheShadow: Du solltest Deine 16MB Arbeitsspeicher mal erweitern und den alten 486DX2 über den Jordan schicken. Man bekommt ja dauernd das Weinen wenn man von Deinen Problemen liest.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
 

Dreamora

BeitragDi, Jan 03, 2006 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Er hat schon recht. Vorher wars bei objekt intensiven Dingen echt ein Horror, weil Mark auf die hirnrissige Idee kam, den GC mit Scopes zu binden.
Und in jeder objekt intensiven Funktion zu collecten hats nur bedingt gebracht, weil der Pool dann net sauber an "höhere Scopes" abgetreten wurde, was das ganze aufräumen in Funktionen nichtig machte ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheShadow

Moderator

BeitragDi, Jan 03, 2006 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Bruz - wer von uns hat den größeren ....

... PC Smile

nein ich merkte den Unterschied an HotDocs schon - als der neue GC da war... Ist deutlich schneller geworden - und der Speicherverbrauch ist laut Task-Manager etw. gesunken... Sowas macht eine Änderung im Compiler aus... Und sowas hätte vom 1. Tag an da sein sollen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group