Вы вызываете функцию для чтения строк в файл.Хорошо.Когда вы закончите с этой функцией, вызовите ее, чтобы освободить строки.
void free_lines(char** lines, int num_lines)
{
while (num_lines --> 0)
free(lines[num_lines]);
free(lines);
}
Не просто поднимите этот код.Убедитесь, что вы понимаете это.
Если ваш вызов для read_lines
выглядит следующим образом:
char **lines = NULL;
int num_lines = 0;
FILE *fp = fopen(...)
if (fp)
read_lines(fp, &lines, &num_lines);
fclose(fp);
Вы бы вызвали free_lines
так:
free_liens(lines, num_lines);
Отказ от ответственности: я не проверял ваши read_lines и не собираюсь этого делать.