Dynamische Speicherallokation
Dynamische Speicherallokation
Prinzip
Zuteilung von Speicher nach Bedarf, da begrenzte Ressouce
- implizit, wenn benötigte Menge Speicher zur Compilerzeit feststeht
- z.B. Variable
- explizit, wenn benötigte Menge Speicher zur Compilerzeit unbekannt ist
- z.B. Array mit unbekannter Länge
malloc: Memory ALLOCation in C
- Dynamische Speicherverwaltung
#include <stdlib.h> void* malloc(size_t size)- Es wird ein Speicherblock mit der Größe
sizeBytes reserviert - Rückgabe: Zeiger auf Speicherblock der wenigsten Größe
sizeBytes hat - Speicher wird nicht (mit 0) initialisiert
- void* : Ein Pointer auf einen nicht festgelegten Typ
- Es wird ein Speicherblock mit der Größe
Fehlerbehandlung in C mit malloc
- wenn
mallockeinen Speicherplatz reservieren konnte, weil der gesamte Speicher bereits verwendet wird, dann wird als Ergebnis in spezieller Pointer-WertNullausgegeben
int8_t *foo_with_error_handling(int32_t n){ // to be used
int8_t *p;
// allocate a block of n bytes p
= (int8_t *) malloc(n);
if (p == NULL){
perror("malloc failed while allocating n bytes");
exit(1);
}
return p;
}