Heap
Der Heap ist ein dynamisch verwalteter Speicherbereich eines Prozesses.
Auf dem Heap wird Speicher zur Laufzeit explizit reserviert, z.B. in C mit:
int *p = malloc(sizeof(int));
Eigenschaften:
- Speicher bleibt so lange reserviert, bis er explizit freigegeben wird.
- In C erfolgt die Freigabe mit
free. - Der Heap eignet sich für Daten, deren Größe oder Lebensdauer erst zur Laufzeit bekannt ist.
Typische Fehler
- Speicher reservieren, aber nicht freigeben → Memory Leak
- Zugriff nach
free→ Use-after-free - Zugriff auf nicht reservierten Speicher → undefiniertes Verhalten / Segmentation Fault
Abgrenzung zum Stack
- Stack: automatisch, funktionsgebunden
- Heap: explizit, dynamisch, nicht direkt an Funktionsaufrufe gebunden