Wie werden in BB Types intern verwaltet?
Übersicht

horstböhseBetreff: Wie werden in BB Types intern verwaltet? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, die ist natürlich Lokal ![]() Für sowas gibts ja auch den Local befehl |
||
between angels and insects |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm, das ist ja doof!! ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann bin ich ja beruhigt!!!
Danke!! ![]() |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie praktisch ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Upsala, sorry ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group