Как исправить ошибку "0x0000005" в C++
Я делаю простую змеиную игру на c++, используя связанный список. Код работал нормально, но внезапно он начал сбоить с этой ошибкой :
"Процесс вернул -1073741819 (0xC0000005) время выполнения : 2.301 с нажмите любую клавишу, чтобы продолжить. "
Я искал об этом на других форумах и понял, что это вызвано тем, что я пытался получить доступ к ограниченной памяти. Я хочу знать, что вызвало эту ошибку и как я могу ее исправить ? Ниже приведен код, дающий ошибку :
Что я уже пробовал:
#include <iostream> #include<string.h> #include<malloc.h> #include<windows.h> #include<stdlib.h> using namespace std; struct Node { string data; Node* link; int x_cor; int y_cor; }; void createMap(string map[25][25]); void printMap(string map[25][25]); void createSnake(Node** head,Node** tail,string map[25][25]); void pushNode(struct Node** head,Node** tail,string map[25][25]); void ShowConsoleCursor(bool x) { HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO info; GetConsoleCursorInfo(out,&info); info.bVisible = x; SetConsoleCursorInfo(out,&info); } int main() { string map[25][25]; Node* head; Node* tail; ShowConsoleCursor(false); createMap(map); createSnake(&head,&tail,map); printMap(map); for(int i=0;i<10;i++) { system("CLS"); pushNode(&head,&tail,map); printMap(map); Sleep(500); } cout<<head->x_cor<<" "; cout<<head->y_cor; return 0; } void createMap(string map[25][25]) { for(int i=0;i<25;i++) { for(int j=0;j<25;j++) { if((i==0)||(i==24)||(j==0)||(j==24)) map[i][j] = "# "; else map[i][j] = " "; } } } void printMap(string map[25][25]) { cout<<"\n"; for(int i=0;i<25;i++) { cout<<" "; for(int j=0;j<25;j++) { cout<<map[j][i]; } cout<<endl; } } void createSnake(Node** head,Node** tail,string map[25][25]) { Node* temp; Node* newNode; for(int i=2;i<7;i++) { newNode =(Node*)malloc(sizeof(Node)); newNode->x_cor = i; newNode->y_cor = 3; newNode->data = "O "; if(i==2) { (*tail) = newNode; temp = newNode; } if(i == 6) { (*head) = newNode; } if(i>0) { temp->link = newNode; temp = temp->link; } map[newNode->x_cor][newNode->y_cor] = newNode->data; } free(temp); free(newNode); } void pushNode(struct Node** head,Node** tail,string map[25][25]) { Node* newNode =(Node*)malloc(sizeof(Node)); newNode->data = "O "; newNode->x_cor = (*head)->x_cor; newNode->y_cor = (*head)->y_cor; (*head)->link = newNode; (*head) = (*head)->link; ((*head)->x_cor)++; map[(*head)->x_cor][(*head)->y_cor] = newNode->data; int x = (*tail)->x_cor; int y = (*tail)->y_cor; Node* temp; temp = (*tail); (*tail) = (*tail)->link; free(temp); map[x][y] = " "; free(newNode); free(temp); }