lima-city: Webhosting, Domains und Cloud
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 (718 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer