C-Programmierung

Die Betriebssystemfunktion Malloc

Dynamische Arrays | | Speicherverwaltung: Free

#include <stdlib.h>

void *malloc(size_t n); /* signature */
  • definiert im Standard Library Header stdlib.h
  • size_t ist ein vorzeichenloser Ganzzahltyp (wie unsigned 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);

Oder kürzer:

char *ptr;

if ((ptr=(char *)malloc(1000))==NULL) exit(1);

Oder noch kürzer:

char *ptr;

if (!(ptr=(char *)malloc(1000))) exit(1);

Oder am kürzesten:

#include <assert.h>
#include <stdlib.h>

char *ptr=(char *)malloc(1000);
assert(ptr);

Die Funktion assert bricht ein Programm ab wenn der Parameterwert FALSE bzw. NULL ist.

Dynamische Arrays | | Speicherverwaltung: Free

Options: