Wie werden in BB Types intern verwaltet?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

horstböhse

Betreff: Wie werden in BB Types intern verwaltet?

BeitragDo, Feb 03, 2005 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!!

Ich bin vor kurzem von der Programmierung mit c++ und dx auf BB umgestiegen und bin es somit gewöhnt, dass ich, wenn ich Listen benutze und für die Elemente Speicher reserviere, diesen Speicher anschließend wieder freigeben muss!!!

In BB reserviere ich ja mit NEW speicher! Muss ich diesen dann mit DELETE wieder freigeben oder macht das BB automatisch?

Wenn ja, wann geschieht dies? Beim beenden des Programms oder schon beim Verlassen der Funktion, in der die Variable deklariert wurde?

Jan_

Ehemaliger Admin

BeitragDo, Feb 03, 2005 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Types sind Global.

du legst mit new einen Type an
und löscht mit Delete einen (den du angibst)

Beim Programm beenden wird alles ausm Speicher genommen.

Da Types Global sind, kannst du auch ausserhalb, der erstell funktion drauf zugreifen
z.B.
Code: [AUSKLAPPEN]

For Computer.Player = Each Player
...
next
between angels and insects
 

horstböhse

BeitragDo, Feb 03, 2005 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
danke erstmal!!

die variablen, in denen die handles auf die liste gespeichert sind, sind aber Gott sei dank lokal! habs grad ausprobiert!

Ich dachte schon, in BB ist alles global!!

Find ich nämlich unpraktisch

Jan_

Ehemaliger Admin

BeitragDo, Feb 03, 2005 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, die ist natürlich Lokal Smile

Für sowas gibts ja auch den Local befehl
between angels and insects

Hubsi

BeitragDo, Feb 03, 2005 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Speicher den Du einmal reserviert hast (bei Types) kannst Du nicht freigeben (jedenfalls nicht ohne weiteres). BB geht davon aus das die Anzahl an Einträgen welche je gebraucht wurde wieder vorkommt und hält den Speicher reserviert. Mit Delete wird lediglich das Handle als Null deklariert.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

horstböhse

BeitragFr, Feb 04, 2005 9:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, das ist ja doof!! Sad

Ich brauch eine ziemlich große Liste zur Erstellung eines Terrains mit vielleicht 1000 Einträgen!!

Wenn die Erstellung abgeschlossen ist, brauch ich sie aber nicht mehr, wenn das Spiel läuft!!

Ist das nicht Speicherverschwendung?

x-pressive

BeitragFr, Feb 04, 2005 11:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:
Mit Delete wird lediglich das Handle als Null deklariert.

Eindeutig nein - das 'Handle' zu einer Type-Instanz wird mit Instanz.Typ = Null auf Null gesetzt. Das Handle zeigt dann nicht mehr auf eine Instanz, die Instanz selbst bleibt aber davon unberührt.

DELETE hingegen löscht eine einzelne Instanz eines Types. Wenn du also alle angelegte Instanzen eines Types löschen möchtest, gehst du einfach mir einer FOR...EACH Schleife durch und löscht jede Instanz mit DELETE. Wenn eine Type-Instanz mit DELETE gelöscht wird, wird der von ihr benötigte Speicher selbstverständlich wieder freigegeben. Wenn dem nicht so wäre, würde mein momentanes Game z.B. schon nach einem Level abschmieren, da ich im Laufe des Spiels tausende von Instanzen erzeuge -und immer wieder lösche.

1000 Type-Instanzen sollten überhaupt kein Problem sein -wenn du sie später wieder löscht.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

horstböhse

BeitragFr, Feb 04, 2005 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann bin ich ja beruhigt!!!

Danke!! Smile
 

Timo

BeitragFr, Feb 04, 2005 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
x-pressive hat Folgendes geschrieben:
[...], gehst du einfach mir einer FOR...EACH Schleife durch und löscht jede Instanz mit DELETE.


man braucht nicht umbedingt eine For-Each schliefe, es reicht
Code: [AUSKLAPPEN]
Delete Each typeName
Wink

x-pressive

BeitragFr, Feb 04, 2005 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie praktisch Smile
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Hubsi

BeitragFr, Feb 04, 2005 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Upsala, sorry Embarassed Ich dachte das mal anders gelesen zu haben.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group