Указатель deque
, который вы передаете deque_create
, не инициализирован. Имеет неопределенный («мусорный») контент. Поэтому он не указывает на действительную деку. Но вы пытаетесь получить к нему доступ с помощью оператора ->
.
Ваша инициализация / создание deque находится на неправильном уровне: вы пытаетесь создать узлы, но вы должны создать deque (без каких-либо узлов, изначально .)
Вы можете написать функцию-конструктор, которая выделяет память и инициализирует ее:
dlink *deque_create(void)
{
dlink *deque = malloc(sizeof(*deque));
// Handle allocation failure
deque->head = deque->tail = NULL;
deque->errorcode = 0;
return deque;
}
Затем используйте ее так:
dlink* deque = deque_create();
// do stuff with deque
// delete deque and its nodes
Вы также должны написать Функция деструктора, которая удаляет все узлы для дополнения конструктора.