У меня должен быть массив структур в игре, которую я делаю - но я не хочу ограничивать массив фиксированным размером. Мне говорят, что существует способ использовать перевыделение для создания массива больше, когда это должно, но не может найти рабочие примеры этого.
Кто-то мог показать мне, как сделать это?
Начните с создания массива:
structName ** sarray = (structName **) malloc(0 * sizeof(structName *));
Всегда следите за размером отдельно:
size_t sarray_len = 0;
Для увеличения или усечения:
sarray = (structName **) realloc(sarray, (sarray_len + offset) * sizeof(structName *));
Затем установите размер:
sarray_len += offset;
Рад помочь и надеюсь это поможет.
От http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/
/* realloc example: rememb-o-matic */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int input,n;
int count=0;
int * numbers = NULL;
do {
printf ("Enter an integer value (0 to end): ");
scanf ("%d", &input);
count++;
numbers = (int*) realloc (numbers, count * sizeof(int));
if (numbers==NULL)
{ puts ("Error (re)allocating memory"); exit (1); }
numbers[count-1]=input;
} while (input!=0);
printf ("Numbers entered: ");
for (n=0;n<count;n++) printf ("%d ",numbers[n]);
free (numbers);
return 0;
}