eigenes Type After ? -> Speicherzumühlung
Übersicht

![]() |
StarGazerBetreff: eigenes Type After ? -> Speicherzumühlung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich möchte in einem Object auf seinen Nachfolger schalten können. Wollte das so lösen, indem ich im Object einfach auf seinen Nachfolger zeigen lasse, jedoch wird dabei der Speicher zugemühlt Code: [AUSKLAPPEN] Type TWay Field x,y Field afterWay:TWay EndType WayList:TList = CreateList() Graphics 640,480 While Not KeyDown(KEY_ESCAPE) ClearList WayList For i = 1 To 100 w:TWay = New TWay w.x = Rand(1,100) w.y = Rand(1,100) ListAddLast WayList,w:TWay Next For w:TWay = EachIn WayList old:TWay = w If old >< Null Then w.afterWay = old 'hiermit möchte ich später auf sein nächstes Object selbst weiter schalten Next DrawText "benutzer Speichers:"+ GCMemAlloced(),10,10 Flip 0 Cls Wend So wie es zu Zeit ist, werden so wohl kopiert. Würden denn überhaupt bei einer Veränderung der Werte im "w.afterWay.x" auch die im UrspungsObject mitverändert ? Gibt es eigentlich eine Ersatz für "FleshMen" ?, vielleicht könnte man das damit lös meine zweite Frage wäre zu String. Wenn ich einen String veränder, das auch die anderen Strings die darauf zugeifen auch verändert werden. Code: [AUSKLAPPEN] Graphics 640,480
a:String = "blababla" b:String = a b = Null c:String = "ABCDE" d:String = c c = "23456" While Not KeyDown(KEY_ESCAPE) DrawText A,10,10 DrawText d,10,30 Flip 0 Cls Wend Das könnte man wohl alles mit Pointern lösen, aber ich habe gelesen daß das nicht so toll sein soll, und man lieber die Finger von lassen sollte. |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
FlushMem(Ich nehme an das meinst du) Gibt es in der aktuellen Version von BMax nicht mehr. | ||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
In BlitzMax speichert man Objekte in der regeln in Listen. Das sind Objekte vom Typ TLIst, die man auch durchgehen kann.
Code: [AUSKLAPPEN] SuperStrict
Type TTest Field in:Int Field do:Double Field st:String EndType Local myList:TLIst = new TList ' Objekte reinstopfen myLIst.addLast(new TTest); myLIst.addLast(new TTest); For Local t:TTest = eachin TList ' t Ist nun das Objekt Next End Dementsprechend gibts auf after etc, guck mal in die docs |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
@BORNtobeNAMELESS
ja, das habe ichin vielen Themen gesehen. Aber funktioniert nicht mehr in der Aktuellen Version ![]() @Blitzcoder Ist es den sinvoll nur wegen einem Object eine Liste erstellen ? Ne art Zeiger auf das bestimmte Object wäre doch sinvoller und sicher auch schneller (nicht nur für After, sondern auf irgendein eins) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. man braucht kein flushmem mehr. der GC von BM arbeitet von selbst. Sobald keine referenz mehr auf das objekt zeigt wirds freigeräumt. wenn immer was drauf zeigt bleibts immer
2. direkte referenz macht sinn, liste macht sinn, alles macht sinn. es kommt auf die anwendung an. du musst dir einfach immer bewusst sein das du alle referenzen aufheben musst um ein objekt wieder "los zu werden" |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group