MALLOC(3)

BEZEICHNUNG
calloc, malloc, free, realloc - belegen und freigeben von dynamischem Speicher

ÜBERSICHT
#include <stdlib.h>

void *calloc(size_t nmemb, size_t size);
void *malloc(size_t size);
void free(void *ptr);
void *realloc(void *ptr, size_t size);

BESCHREIBUNG
calloc() belegt Speicher für ein Array von nmemb Elementen von jeweils size Byte und gibt einen Zeiger auf den belegten Speicherbereich zurück. Der Speicher wird auf Null gesetzt.

malloc() belegt size Byte und gibt einen Zeiger auf den belegten Speicherbereich zurück. Der Speicher wird nicht mit Nullen beschrieben.

free() gibt den Speicher frei, auf den ptr zeigt, welcher von einem früheren Aufruf von malloc(), calloc() oder realloc() zurückgegeben worden sein muss. Wenn ptr NULL ist, wird keine Operation ausgeführt.

realloc() ändert die Größe des Speicherblocks, auf den ptr zeigt, auf size Byte. Der Inhalt bleibt unverändert bis zum Minimum von alter und neuer Größe; neu angeforderter Speicher bleibt uninitialisiert. Wenn ptr NULL ist, ist der Aufruf äquivalent zu malloc(size); wenn die Größe Null ist, ist der Aufruf äquivalent zu free(ptr). Wenn ptr nicht NULL ist, muss er von einem früheren Aufruf von malloc(), calloc() oder realloc() zurückgegeben worden sein.

RÜCKGABEWERTE
Bei calloc() und malloc() ist der zurückgegebene Wert ein Zeiger auf den belegten Speicher, welcher passend ausgerichtet ist für alle Arten von Variablen, oder NULL falls die Anforderung scheitert.

free() gibt keinen Wert zurück.

realloc() gibt einen Pointer auf den neu belegten Speicher zurück, welcher passend ausgerichtet ist für alle Arten von Variablen und welcher sich von ptr unterscheiden kann, oder NULL falls die Anforderung scheitert oder falls die Größe Null war. Wenn realloc() scheitert bleibt der ursprüngliche Block unverändert - er wird nicht freigegeben oder verändert.

KONFORM ZU
ANSI-C

SIEHE AUCH
brk(2).