Вы можете malloc
блок памяти, достаточно большой, чтобы содержать определенное количество элементов массива.
Затем, прежде чем вы превысите это число, вы можете использовать realloc
, чтобы увеличить блок памяти.
Вот немного кода C, который показывает это в действии, перераспределяя массив целых чисел, когда он слишком мал, чтобы содержать следующее целое число.
#include <stdio.h>
#include <stdlib.h>
int main (void) {
int *xyzzy = NULL; // Initially NULL so first realloc is a malloc.
int currsz = 0; // Current capacity.
int i;
// Add ten integers.
for (i = 0; i < 10; i++) {
// If this one will exceed capacity.
if (i >= currsz) {
// Increase capacity by four and re-allocate.
currsz += 4;
xyzzy = realloc (xyzzy, sizeof(int) * currsz);
// Should really check for failure here.
}
// Store number.
xyzzy[i] = 100 + i;
}
// Output capacity and values.
printf ("CurrSz = %d, values =", currsz);
for (i = 0; i < 10; i++) {
printf (" %d", xyzzy[i]);
}
printf ("\n");
return 0;
}