Вы не выделяете достаточно для своей строки в touch
new->newfile->name = (char *) malloc(sizeof(char));
new->newfile->data = (char *) malloc(sizeof(char));
name и date имеют место только для одного символа, в случае «стандартной» строки это означает, что вы можете обрабатывать только пустые строки (только нулевой символ для их окончания)
strcpy(new->newfile->name, nume);
strcpy(new->newfile->data, content);
достаточно число и содержимое иметь 1 символ, а затем завершающий нуль для записи из выделенных строк, valgrind указывает, что это так
У вас та же проблема в mkdir
To можно легко выделить и скопировать, используя strdup , иначе выделите strlen (xx) + 1 для дублирования xx , поэтому замените
new->newfile->name = (char *) malloc(sizeof(char));
new->newfile->data = (char *) malloc(sizeof(char));
strcpy(new->newfile->name, nume);
strcpy(new->newfile->data, content);
по
new->newfile->name = strdup(nume);
new->newfile->data = strdup(content);
или
new->newfile->name = (char *) malloc(strlen(nume) + 1);
new->newfile->data = (char *) malloc(strlen(content) + 1);
strcpy(new->newfile->name, nume);
strcpy(new->newfile->data, content);
и сделать то же самое в mkdir
в сделать root вы делаете
(*root)->name = "/";
это опасно, потому что если вы хотите освободить ресурсы, вы должны помнить, чтобы не пытаться освободить (*root) -> имя т o не иметь неопределенного поведения, чтобы не рисковать, я призываю вас также продублировать "/"
(*root)->name = strdup("/");
В удалить root вы ничего не делаете, потому что вы установили root в NULL, а затем освободить, поэтому у вас есть утечки памяти. Вам необходимо освободить все выделенные ресурсы, поэтому вам нужно go через все дерево.
У вас та же проблема в rm .
Каждый раз у вас есть выделение, вам нужно бесплатно
в ls не освобождать ресурсы, только печатать
Кажется, весь код, который вы даете, размещен в заголовочном файле, только поместите определения структуры и функции объявлений в заголовочные файлы, переместите функцию определения в исходный файл, если вы еще несколько раз включите этот файл заголовка, у вас будут определены функции несколько раз