FRE

Table Of Contents
hide

Die BASIC-Funktion FRE() gibt die Anzahl in Bytes zurück, wie viel freier RAM-Speicher für Programme und Variablen bei der aktuellen Speicherbelegung noch zur Verfügung steht.
Das Hilfsargument muss vorhanden sein und kann ein beliebiger (syntaktisch korrekter) Ausdruck sein, dessen Typ und Wert dabei aber irrelevant ist.

Ist das Ergebnis des Funktionsaufrufs von FRE negativ, muss der Wert 65536 hinzu addiert werden, um die wirkliche Anzahl der frei verfügbaren Bytes zu erhalten (ein Fehler des BASIC-Interpreters, der das Ergebnis fälschlicherweise als vorzeichenbehaftete 16-Bit-Zahl weiter reicht).

Fehlt das Hilfsargument, kommt es zum Fehler ?SYNTAX ERROR.

Als Nebenwirkung stößt die Funktion FRE vor der Berechnung des freien Speichers die Garbage Collection an, um auch die vorübergehend belegten Speicherbereiche wieder freizugeben.
FRE unter BASIC 7.0

Unter BASIC 7.0 wird der Funktionsparameter nicht mehr ignoriert, sondern muss nun ein numerischer Ausdruck sein, dessen Wert folgende Bedeutung hat:

  • 0: Es wird der freie Programmspeicher zurückgegeben.
  • 1: Es wird der freie Variablenspeicher zurückgegeben sowie die Garbage Collection gestartet.

Andere Werte führen zu einem ?ILLEGAL QUANTITY ERROR.

Das Ergebnis von FRE ist unter BASIC 7.0 immer positiv.

Beispiele

PRINT FRE(.)

Eine degenerierte Fließkommazahl als Argument.

PRINT FRE(0)+65536

Mit Korrektur für den Fall, dass die Funktion einen negativen Wert liefert.

PRINT FRE(.)-65536*(FRE(.)<0)

Gibt immer den richtigen, automatisch korrigierten Wert aus.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Datenschutz
Ich, Andreas Hoever (Wohnort: Deutschland), verarbeite zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in meiner Datenschutzerklärung.
Datenschutz
Ich, Andreas Hoever (Wohnort: Deutschland), verarbeite zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in meiner Datenschutzerklärung.