Seite 1 von 3

DELETE

Verfasst: 06.12.2014 15:01
von CodeCommander
~ DELETE ~

Re: Variable freigeben

Verfasst: 06.12.2014 15:47
von STARGÅTE
Variablen werden (sobald sie benutzt werden) beim kompilieren reserviert und das unabhängig davon ob sie vorher explizit mit Define definiert wurden.
Variablen in Proceduren, werden im Stack erzeugt und somit nach Beendigung der Procedure wieder freigegeben.

Also nein.

Gibt es denn ein Grund warum du den "winzigen" Speicher den eine Variable belegt wieder freigeben musst?

Verfasst: 06.12.2014 15:59
von CodeCommander
~ DELETE ~

Re: Variable freigeben

Verfasst: 06.12.2014 16:21
von NicTheQuick
Purebasic unterstützt keine Scopes wie es C/C++ tut. In Purebasic gibt es nur einen globalen Scope, einen Scope pro Aufruf einer Procedure, einen Scope pro Thread und das war's glaube ich schon.

Re: Variable freigeben

Verfasst: 06.12.2014 16:25
von STARGÅTE
CodeCommander hat geschrieben:dass du innerhalb einer Schleife Variablen deinieren kannst die nach Schleifenbeendigung wieder ungültig und nicht nutzbar sind.
Ja ist mir bekannt.
CodeCommander hat geschrieben:i wird im Schleifenkopf definiert und ist nur innerhalb dieser Schleife gültig. Nutzung von i außerhalb nicht möglich. Genau das will ich. Irgendwie möglich in PB?
Nein ist es nicht, da ja die Kompilierung ganz anders ablaufen müsste.

Alle VariableNamen werden immer als Defined angenommen und sind somit im gesamten Main-Programm gültig und nutzbar.

@Nic: Naja zumindest Module erlauben noch den lexikalischen Scope.

Re: Variable freigeben

Verfasst: 06.12.2014 22:00
von es_91
Also gibt es, außer den "neuen" Modulen, keine Möglichkeit, dass mein Programm im Hauptprogramm definierte Variablen wieder vergisst?

Ist es sinnvoll, Variable wie andere Elemente, die durch eine Initialfunktion eingerichtet werden und durch eine Close...()- oder Free...()-Funktion wieder verdampft werden, zu betrachten? Wenn, währe es ja sinnvoll, diese wieder zu dejustieren.

Was haltet ihr von der Idee, alle Variablen des Hauptprogramms in eine Funktion zu packen und diese, nennen wir sie main() oder init(), einmal aufzurufen? Dann fehlen zwar globale Variablen, aber von deren Verwendung wird einem ja fast überall abgeraten...

Re: Variable freigeben

Verfasst: 07.12.2014 08:27
von Nino
es_91 hat geschrieben:Ist es sinnvoll, Variable wie andere Elemente, die durch eine Initialfunktion eingerichtet werden und durch eine Close...()- oder Free...()-Funktion wieder verdampft werden, zu betrachten? Wenn, währe es ja sinnvoll, diese wieder zu dejustieren.
Variablen oder andere Programm-Elemente können weder "verdampft" noch "dejustiert" werden.

Re: Variable freigeben

Verfasst: 07.12.2014 11:30
von es_91
Nino hat geschrieben:Variablen oder andere Programm-Elemente können weder "verdampft" noch "dejustiert" werden.
Danke für die Deutschlektion.

Du liegst aber falsch, falls Du mit Deiner Aussage erklären wolltest, dass Programmelemente nicht (manchmal) deinitialisiert werden sollten.

Re: Variable freigeben

Verfasst: 07.12.2014 11:36
von Nino
es_91 hat geschrieben:Hoffentlich hat Deine Aussage auch einen technischen Hintergrund,
Meine Aussage hat durchaus einen Hintergrund.
Wenn Du das nicht selbst verstehst, kann ich Dir allerdings nicht helfen.


//edit:
Geänderte Nachricht von es_91 hat geschrieben:Du liegst aber falsch, falls Du mit Deiner Aussage erklären wolltest,
Ich wollte genau das erklären, was ich erklärt habe. Wer sinnverstehend lesen kann, ist klar im Vorteil.

Re: Variable freigeben

Verfasst: 07.12.2014 11:37
von es_91
So, dann erkläre, warum 'Variablen oder andere Programm-Elemente' nicht deinitialisiert werden können oder sollten!