•  Back 
  •  Speicherverwaltung 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File5.12.2  Malloc                                                     TOS

 Name:         »memory allocation« - Speicherplatz reservieren.

 Gemdosnummer: 72

 Deklaration:  void *Malloc ( int32_t number );

 Beschreibung: Die GEMDOS-Routine Malloc reserviert Speicherplatz, 
               oder berechnet die Größe des verfügbaren Speichers. Für 
               den Parameter number gilt:

                Wert   Bedeutung

                -1     Länge des größten verfügbaren Blocks ermitteln
                sonst  Anzahl der zu reservierenden Bytes

               Hinweis: Man darf sich nie darauf verlassen, daß 
               tatsächlich so viele Bytes wie gewünscht alloziert 
               wurden. Konstruktionen der Art Malloc(Malloc(-1L)) sind 
               besonders in Multitasking-Systemen schlicht 
               indiskutabel (Stichwort: Task-Wechsel).

               Unter TOS untersützt das GEMDOS nur eine begrenzte 
               Anzahl von Speicherblöcke. Aus diesem Grund sollte man 
               die Funktion nicht zu häüfig innerhalb eines Programms 
               nutzen, sondern größere Speicherblöcke (mindestens 
               16KBytes) reservieren und selbst verwalten.

               Ferner sollte man folgende Punkte beachten:

                  ∙ der Speicherblock muß nicht leer sein

                  ∙ nacheinander allozierte Speicherblöcke müssen 
                    nicht zwingend zusammenhängen

                  ∙ niemals auf Speicherbereiche zugreifen, der nicht 
                    dem eigenen Prozess gehört. In Systemen mit 
                    Speicherschutz kommt es sonst zu einer Exception.

               In MagiC wird dieser Aufruf auf Mxalloc mit den Modi 0 
               bzw. 3 zurückgeführt (abhängig von den 
               Konfigurationsbits im Programmdatei-Header). Die 
               Konfigurationsbits werden z.Zt. in der Basepage 
               abgelegt.

 Ergebnis:     Die Funktion liefert als Ergebnis die Anfangsadresse 
               des reservierten Bereichs. Ein Nullzeiger bedeutet, daß 
               nicht mehr genügend Speicher zur Verfügung steht. Im 
               Fall number = -1 wird die Länge des größten verfügbaren 
               Speicherblocks zurückgegeben.

 Verfügbar:    Alle GEMDOS Versionen. GEMDOS Versionen kleiner 0.15 
               liefern für den Aufruf Malloc( 0L ) einen Zeiger auf 
               ungültigen Speicher statt daß der Aufruf fehlschlägt 
               wie er sollte.

 Gruppe:       Speicherverwaltung

 Querverweis:  Bindings für Malloc   Mfree   Mxalloc   Maddalt 
               Programmflags