Ошибки памяти в спеллер CS50 (pset5) - PullRequest
0 голосов
/ 06 мая 2020

Я успешно написал код, который может проверять орфографию при загрузке словаря. Чтобы освободить память, я написал функцию unload (), и valgrind не показывает утечек памяти. Но после отправки я получаю несколько ошибок crypti c, т.е.

Conditional jump or move depends on uninitialised value(s): (file: dictionary.c, line: 137)
Conditional jump or move depends on uninitialised value(s): (file: dictionary.c, line: 143)

Ниже приведены моя функция unload (), скриншот valgrind и результат submit50 соответственно. Пожалуйста, помогите.

Спасибо.

// функция выгрузки

bool unload(void)
{
    for (int i = 0; i < N; i++)
    {
        node* temp = table[i];
        node* cursor = temp;
        while (temp != NULL)
        {
            cursor = temp->next;
            free(temp);
            temp = cursor;
        }
        free(cursor);

    }
    return true;
}

// результат valgrind

// отправить50 результат

1 Ответ

0 голосов
/ 10 мая 2020

Это потому, что temp -> next в некоторых случаях не инициализируется.

Вы можете сделать его последним узлом в каждом сегменте таблицы, указывающим на NULL.

...