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