Вы освобождаете слишком много своей исходной памяти.
Посмотрите на цикл for, когда вы освобождаете память:
(*size)++;
//delocating the allocated memories
for (int i = 0; i < size; i++)
free(original[i]);
, поскольку size
является int *
у вас будет очень большое количество итераций, которые позволят освободить гораздо больше памяти, чем было выделено.Чтобы это исправить, сделайте следующее:
(*size)++;
//delocating the allocated memories
for (int i = 0; i < *size; i++)
free(original[i]);
Теперь вы по-прежнему освобождаете один элемент слишком сильно, поскольку увеличиваете * размер при добавлении нового элемента.Окончательная версия для освобождения оригинальной памяти:
(*size)++;
//delocating the allocated memories
for (int i = 0; i < *size - 1; i++)
free(original[i]);