C-Programmierung
Die Betriebssystemfunktion Malloc
← Dynamische Arrays | ● | Speicherverwaltung: Free →
#include <stdlib.h>
void *malloc(size_t n); /* signature */
void *malloc(size_t n); /* signature */
- definiert im Standard Library Header
stdlib.h
size_t
ist ein vorzeichenloser Ganzzahltyp (wieunsigned int
)- es wird ein zusammenhänger Speicherbereich mit n Bytes reserviert
- Der Inhalt des Speicherbereichs ist undefiniert.
malloc()
liefert die Anfangsadresse dieses Speicherbereichs als Rückgabewert (Funktionswert)- steht nicht genug Speicher zur Verfügung, ist der Funktionswert NULL
- der Typ des Zeigers ist typlos, er läßt sich an alle typisierten Zeiger zuweisen
- der Zeigertyp muss nur entsprechend umgewandelt werden (cast)
Beispiel: Reservierung von 1000 Bytes
char *ptr;
ptr=(char *)malloc(1000);
if (ptr==NULL) exit(1);
ptr=(char *)malloc(1000);
if (ptr==NULL) exit(1);
Oder kürzer:
char *ptr;
if ((ptr=(char *)malloc(1000))==NULL) exit(1);
if ((ptr=(char *)malloc(1000))==NULL) exit(1);
Oder noch kürzer:
char *ptr;
if (!(ptr=(char *)malloc(1000))) exit(1);
if (!(ptr=(char *)malloc(1000))) exit(1);
Oder am kürzesten:
#include <assert.h>
#include <stdlib.h>
char *ptr=(char *)malloc(1000);
assert(ptr);
#include <stdlib.h>
char *ptr=(char *)malloc(1000);
assert(ptr);
Die Funktion assert bricht ein Programm ab wenn der Parameterwert FALSE bzw. NULL ist.