Я пытаюсь создать базу данных связанных списков, и по какой-то причине программа не позволяет мне получить доступ к памяти, или, по крайней мере, так говорит отладчик.Я использую отладчик GDB, кодовые блоки.
Я уже скомпилировал программу на другом компьютере с той же операционной системой (windows).Работало без нареканий, НО отладчик показал ту же ошибку.
void print_ListEl(ListEl* head)
{
ListEl* current = malloc(sizeof(ListEl));
current = head;
if (head==NULL) exit(EXIT_FAILURE);
if (current->next==NULL)
{
puts("No elements");
return;
}
else
{
int i=1;
while(current->next!=NULL)
{
printf("%d.%s\n", i, current->name);
current=current->next;
++i;
}
}
free(current);
}
Используется так:
ListEl* element = malloc(sizeof(ListEl));
print_listEl(element);
Эта функция, по-видимому, вызывает проблему в соответствии с отладчиком.Когда я наблюдаю переменную «current-> next», отладчик говорит: «Не удается получить доступ к памяти по адресу».Если я меняю current-> рядом с current, отладчик все равно показывает ту же функцию, что и вызывающая проблему.Структура ListEl - это обычный обычный связанный список с данными типа char.
struct ListEl
{
char name[MAX_CHAR];
struct ListEl* next;
};
Я также использую
typedef struct ListEl ListEl
Заголовки безопасны с ifndef и endif и все они включены, я проверил.
Эта функция вместо того, чтобы ставить «Нет элементов», когда в списке нет элементов, выбрасывает некоторый случайный символ и вылетает из программы.