0 Pluspunkte 0 Minuspunkte

Wenn ich dynamischen Speicher für ein Array reserviere.

int *intArray = (int *)malloc(10 * sizeof(int));

Kann ich den Speicher im Anschluss noch erweitern? Kann ich z.B in einer Schleife bei jedem Durchlauf Daten anhängen und den Speicher um genau die Menge erweitern das die Daten hineinpassen?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du kannst bereits reservierten Speicher mit der Funktion realloc erweitern.

int *arr = NULL;  // Zeiger auf das Array
int size = 5;     // Anfangsgröße des Arrays

// Speicher für das Array initialisieren
arr = (int *)malloc(size * sizeof(int));

// Elemente im Array initialisieren
for (int i = 0; i < size; i++) {
    arr[i] = i;
}

// Neue Größe des Arrays
int newSize = 10;

// Neuen Speicherplatz hinzufügen
int *temp = (int *)realloc(arr, newSize * sizeof(int));

arr = temp;  // Den aktualisierten Zeiger zuweisen

// Neue Elemente im erweiterten Array initialisieren
for (int i = size; i < newSize; i++) {
    arr[i] = i;
}

// Array anzeigen
for (int i = 0; i < newSize; i++) {
    printf("%d ", arr[i]);
}

free(arr);  // Speicher freigeben
von (776 Punkte)