#include <stdlib.h> void *malloc(size_t size);malloc reserviert einen Speicherbereich von size Bytes auf dem Heap.
Es findet keine Initialisierung des zur Verfügung gestellten
Speicherbereichs statt.
Wenn der Parameter size den Wert 0 hat, liefert malloc NULL
zurück.
Rückgabewert:
malloc liefert bei fehlerfreier Ausführung einen Zeiger, der auf den
neu reservierten Speicherbereich zeigt.
Wenn kein Speicherbereich ausreichender Größe zur Verfügung
steht, dann ist der Rückgabewert NULL.
Beispiel:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <process.h>
int main(void)
{
char *str;
/* Speicherplatz fuer Zeichenkette str zuweisen */
if ((str = (char *) malloc(10)) == NULL)
{
printf("Nicht genuegend Speicherplatz verfuegbar\n");
exit(1); /* Programm beenden */
}
strcpy(str, "Hello");
printf("String is %s\n", str);
/* Speicherplatz wieder frei geben */
free(str);
return 0;
}
realloc
#include <stdlib.h> void *realloc(void *block, size_t size);Ändert die Größe eines reservierten Blocks im Hauptspeicher.
Rückgabewert:
realloc gibt die neue Adresse des Speicherblocks zurück, die von der
bisherigen Adresse abweichen kann.
Ist die Größenänderung nicht möglich, gibt realloc
NULL zurück.
calloc
#include <stdlib.h> void *calloc(size_t nitems, size_t size);Reserviert Hauptspeicher.
Rückgabewert:
calloc liefert einen Zeiger auf den neu reservierten Speicherbereich.
Wenn kein Speicherbereich ausreichender Größe zur Verfügung
steht, oder wenn nitems oder size den Wert 0 haben,
liefert calloc NULL zurück.
free
#include <stdlib.h> void free(void *block);Gibt einen reservierten Speicherblock wieder frei.
Rückgabewert: keiner
Bemerkungen zu DOS-Systemen
In den kleinen Datenmodellen wird mit near-Zeigern gearbeitet, der Heap
liegt zwischen dem oberen Ende des Datensegments und dem unteren Ende des
Stack. Der Heap reserviert den gesamten hier zur Verfügung stehenden
Speicherbereich bis auf einige Bytes direkt unterhalb der Stack-Spitze,
die für Stack-Vergrößerungen und für das Betriebssystem
reserviert sind.
In den großen Datenmodellen wird mit far-Zeigern gearbeitet, der Heap
beginnt oberhalb des Stack und endet mit der höchsten vom System zur
Verfügung gestellten Speicheradresse.