PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vx Ace Speicher Freigeben?



djeurissen
14.09.2014, 11:11
Tagchen sorry das ich das Forum mit meinen Fragen zuwerfe .-.

Wie dem auch sei, ich erstelle in einem Event ein Script:
$data = 27
data2 = 28

In einem 2 Script im selben Event gebe ich die variablen aus:
p $data
p data2

Natürlich stürzt das Programm ab, da data2 nicht mehr existiert ist ja auch eine locale Variable. Mein Problem dabei, wie kann ich den Speicher von $data wieder freigeben?
Es kann ja mal passieren das die Scriptbox zu klein ist (Toll das sowas überhaupt möglich ist) und dementsprechend muss ich vom 2 Script weiterhin auf die zuvor erstellten Variablen zugreifen, dannach brauche ich diese Variablen aber nicht mehr. Trotz allem scheinen sie ja weiterhin im Speicher rumzugurken und das will ich nicht...

Cornix
14.09.2014, 11:20
Du könntest wohl den Wert der Variablen auf nil setzen und diese damit möglicherweise für die Garbage-Collection frei stellen. Allerdings kann ich das nicht garantieren.
Allgemein sollten einfache Variablen wie diese sowie nicht ins Gewicht fallen. Falls es wirklich kritisch für dich ist kannst du ja jederzeit auf globale Variablen verzichten und Objekt orientiert arbeiten.

-KD-
15.09.2014, 11:14
Hi,

Integervariablen belegen keinen zusätzlichen Speicher, daher brauchst du ihn hier auch nicht freigeben. Für komplexere Daten kannst du, wie Cornix schon sagte, die Variable auf nil setzen.

Schlauer ist es, Instanzvariablen zu verwenden: Diese Variablen sind dann an ein Objekt gebunden und werden freigegeben, sobald das Objekt im Speicher gelöscht wird. Wenn die Variable irgendeine Eigenschaft des Event-Objektes ist, könntest du die Variable an das Event binden. Sie wird dann freigegeben, sobald du die Map verlässt (und das Event gelöscht wird). Oder du bindest die Variable an den Event-Interpreter. Dann ist die Variable für alle Events auf der Map sichtbar, wird aber ebenfalls beim Verlassen der Map gelöscht. Was sinnvoller ist kann man nur sagen, wenn du etwas mehr darüber verrätst, was du genau machen möchtest.