|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Die Aufrufe sind im einzelnen:
Diese Funktion wird benutzt, um einen Speicherblock zu allozieren, der nur
von der aufrufenden Funktion genutzt werden sollte. Die benötigte
Länge des Blocks wird als Parameter übergeben. Am Ende muß
der Block wieder zurückgegeben werden, dies geschieht nicht automatisch,
wenn die aufrufende Funktion beendet wird! Um dies zu erreichen, benutzen
Sie KRfree mit der Adresse, die von KRmalloc
zurückgeliefert wird.
KRmalloc gibt die Adresse des allozierten Blocks zurück, oder NULL bei
knappem Speicher.
Diese Funktion wird benutzt, um Speicherblöcke freizugeben, die zuvor von
KRmalloc oder KRrealloc alloziert wurden. Ein NULL-Pointer hat keinen
Systemabsturz zur Folge.
Diese Funktion wird benutzt, um zu erfahren, wieviel Systemspeicher noch
frei ist. Ist der Parameter 'which' TRUE, so wird die Größe des größten
Blocks zurückgegeben, bei FALSE der gesamte freie Speicher.
Die Funktion verändert die Größe eines Blocks, der zuvor mit
KRmalloc angefordert worden ist. Wenn möglich, wird versucht, den Block
nicht zu verschieben, auch wenn new_length größer ist als der
vorherige Block. Ist dies nicht möglich, so enthält der Parameter
'block' die neue Adresse, der Inhalt wird in den neuen Block kopiert. Ist
'new_length' gleich Null, so verhält sich die Funktion wie KRfree,
der Block wird freigegeben.
Es wird die Adresse des neuen Blocks zurückgegeben.
Der System Memory Manager
Der System Memory Manager enthält alle nötigen Funktionen für die interne
Speicherverwaltung. Grundsätzlich wird der Code aus dem Kerninghan&Ritchie
benutzt, aber es gibt kleine Unterschiede. "Morecore" wird nie aufgerufen.
Die Funktionen nutzen einen großen Speicherblock, der während des Bootens
alloziert wird. Sie werden benutzt, um Datagramme sowie Empfangs- und Sende-Queues zu
speichern, und um interne Strukturen aufzunehmen, die vom Kernel angelegt
und auch wieder freigegeben werden. Daher ist interner Speicher eine wertvolle
Ressource und sollte nicht verschwendet werden (aber als ATARI-Programmierer
wissen Sie das ja :-)). Sofern möglich, sollten STinG-Clients immer die normalen TOS-
Funktionen Malloc und Mfree nutzen.
Die Funktion KRmalloc
void * cdecl KRmalloc (int32 length);
Funktion : Alloziert Systemspeicher.
Die Funktion KRfree
void cdecl KRfree (void *block);
Diese Funktion gibt einen Block des Systemspeichers wieder frei.
Die Funktion KRgetfree
int32 cdecl KRgetfree (int16 which);
Liefert die Größe des freien Systemspeichers zurück.
Die Funktion KRrealloc
void * cdecl KRrealloc (void *block, int32 new_length);
Hiermit wird die Größe eines bereits allozierten Speicherblocks
verändert.
Enthält 'block' NULL, so verhält sich der Aufruf wie KRmalloc,
doch der Inhalt des neuen Blocks wird mit Nullen überschrieben.
Zum Anfang der Seite
English version not yet available. |