от
Я знаю, что для каждого malloc должен быть free (), но в случае существующего связного списка, переданного в рекурсивную функцию для вставки нового узла в связанный список, как бы вы освободили это? Я использую valgrind, и это показывает мне, что я должен освободить malloc Итак, моя функция имеет в качестве параметров char * и указатель на список, переданный как **, я провел некоторое исследование, и его нужно было передать таким образом, чтобы вставить новые узлы, даже если указатель работал только хорошо
void showDir(char *name, linkedList **list) {
    DIR *dir;
    struct dirent *entry;

    if (!(dir = opendir(name))) return;

    while ((entry = readdir(dir)) != NULL) {
        if (entry

Я вызываю рекурсивную функцию, как эта showDir(ptr
и освобождая это так

linkedList *ptr = list;
    while (ptr != NULL) {
        linkedList *next = ptr

Конечно, список, переданный при первоначальном вызове, уже заполнен!

Спасибо за чтение и надеюсь, что вы можете помочь понять, что я делаю здесь неправильно!

--РЕДАКТИРОВАТЬ

==1914== 64 (24 direct, 40 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 14
==1914==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck
    

        

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...