Я создал базовый LinkedList на C, и у меня есть создание, добавление и начало работы.Помимо get вызывает segfault после, казалось бы, случайного количества вызовов get (Сбой 96-го вызова, список содержит 94 элемента). При доступе к следующему указателю на текущем узле возникает segfault.
Эта строка вызываетsegfault while(cur->next != null && i < index)
Я проверил, и cur не возвращает нулевой адрес памяти до того, как произойдет segfault.Это также приводит к сбою во втором цикле вызова, который приводит к сбою (Второй printf выводит только 0).Это вся функция get
void *linkedList_get(LinkedList list, int index)
{
Node *cur = list.head;
int i = 0;
if(index != 0)
{
while(cur->next != null && i < index)
{
cur = cur->next;
printf("I %i\n", i);
printf("%i\n", cur);
i++;
}
}
if(index == i)
return cur->data;
return null;
}
Это структура Node
typedef struct
{
void *data;
struct Node *next;
struct Node *prev;
} Node;
Это весь код, если необходимо http://pastebin.com/hpWA8tb8 (Обратите внимание, это моя первая программа на Cтак что это, вероятно, немного небрежно, и я не освобождаю память)