In C kann Speicher während der Laufzeit dynamisch reserviert und wieder freigegeben werden.
Diese Lektion behandelt malloc, calloc, realloc und free.
int *p = (int*) malloc(5 * sizeof(int));
if(p == NULL) {
perror("Speicher konnte nicht reserviert werden");
return 1;
}
malloc muss immer überprüft werdenint *arr = (int*) calloc(5, sizeof(int));
for(int i=0; i<5; i++) {
printf("%d ", arr[i]); // Ausgabe: 0 0 0 0 0
}
arr = (int*) realloc(arr, 10 * sizeof(int));
if(arr == NULL) {
perror("Speicher konnte nicht vergrößert werden");
return 1;
}
free(arr);
arr = NULL; // Dangling Pointer vermeiden
NULL-Zeiger überprüfenfree Zeiger auf NULL setzenfree auf dieselbe Adressemalloc/calloc/realloc muss ein free habenmalloc – uninitialisierten Speicher reservierencalloc – Speicher reservieren und initialisierenrealloc – Größe anpassenfree – Speicher freigeben