EDIT
В этом случае динамические массивы, как вы сказали, не улучшат ничего, код только усложнит. Для каждого добавления целого числа вы использовали realloc
, пытаясь агрессивно сэкономить память, но это займет больше времени при выполнении. Почему бы не выделить блок памяти, зарезервированный для массива, и для отражения динамического символа поместите массив в структуру с последним индексом, а когда вы добавите что-либо, добавьте его в последнее место и увеличьте счетчик. Когда этот блок заполнен, вы можете связать другой блок, чтобы он указывал на другой.
typedef struct _dyna_arr
{
my_type data_arr[MAX_LEN];
int n;
struct _dyna_arr *next block;
};
Поэтому вы ведете связанный список из нескольких массивов. Размер MAX_LEN
можно исправить, что подходит для приложения, которое поможет уменьшить внутреннюю фрагментацию.
* старый ответ удален *