Я сейчас сталкиваюсь с ошибкой на C, использую Visual Studio и впервые работаю с Связанными списками , я пытаюсь сделать проект немного более структурированным, и из-за этого Я сталкиваюсь с некоторыми проблемами.
Ошибка, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь вставить элемент в связанный список, моя программа просто падает, и выдает мне эту ошибку:
Исключение, сгенерированное в 0x500CC944 (ucrtbased.dll) в Lesson_LinkedLists.exe: 0xC0000005: нарушение доступа при записи в локальный 0xCDCDCDCD.
Я запутался с этой ошибкой, потому что она действительно не поддерживает меня с достаточным количеством информации, поэтому я могу искать через Интернет.
Вот мои структуры, распределение памяти и функция вставки:
typedef struct Word
{
char Text[Max_Letters];
}*pt_Word;
typedef struct Node_Element
{
pt_Word Word_Data;
struct Node_Element * Next_Node_Element;
}*pt_Node_Element;
typedef struct List
{
char Language[2];
int Number_Words_List;
pt_Node_Element Header;
}*pt_List;
pt_List List_Dynamic_Memory();
pt_Node_Element Node_Dynamic_Memory();
void Insert_Element_Begin(pt_Node_Element Node_Element, pt_List List_Pointer);
int main()
{
int option;
pt_Node_Element Node;
pt_List List;
List = List_Dynamic_Memory();
Node = Node_Dynamic_Memory();
do
{
option = menu();
switch (option)
{
case 1:
{
printf("Diga-me uma palavra : \n");
// fflush(stdin);
gets_s(Node->Word_Data->Text);
Insert_Element_Begin(Node, List);
break;
}
case 2:
{
Display_List(Node, List); break;
}
}
} while (option != 0);
//system("Pause");
}
pt_List List_Dynamic_Memory()
{
pt_List List_Pointer;
List_Pointer = (pt_List)malloc(sizeof(struct List));
List_Pointer->Header = NULL;
List_Pointer->Number_Words_List = 0;
return List_Pointer;
};
pt_Node_Element Node_Dynamic_Memory()
{
pt_Node_Element Node_Pointer;
Node_Pointer = (pt_Node_Element)malloc(sizeof(struct Node_Element));
Node_Pointer->Next_Node_Element = NULL;
return Node_Pointer;
};
void Insert_Element_Begin(pt_Node_Element Node_Element, pt_List List_Pointer)
{
List_Pointer->Number_Words_List++;
if (List_Pointer->Header == NULL)
{
List_Pointer->Header = Node_Element;
Node_Element->Next_Node_Element = NULL;
return;
}
Node_Element->Next_Node_Element = List_Pointer->Header;
List_Pointer->Header = Node_Element;
};
Мне интересно, связано ли это с выделением памяти, я новичок, поэтому прошу прощения, если это глупая ошибка.
Заранее спасибо за помощь.