curLocX = 1;
curLocY = 1;
string pName[curLocX][curLocY];
string pDes[curLocX][curLocY];
pDes[curLocX][curLocY] = "The land of caeks";
pName[curLocX][curLocY] = "Caekland";
goto defPlace;
defPlace:
cout << "You are currently at " << pName[curLocX][curLocY] << "\n";
cout << pDes[curLocX][curLocY] << "\n";
cout << "Type h for help, and c for commands\n";
getline(cin,k);
return 0;
Its around this part, windows just says the program stopped working, and I see no reason for it to crash.
curLocX = 1;
curLocY = 1;
string pName[curLocX][curLocY];
string pDes[curLocX][curLocY];
pDes[curLocX][curLocY] = "The land of caeks";
pName[curLocX][curLocY] = "Caekland";
In this section, curLocX and curLocY are both 1. You use these (as dimensions) for creating two 2D arrays of strings, pName and pDes. So pName is an array (with one element) of arrays of strings (with one element) - that is, there's only one string. It's name is pName[0][0]. The same is true for pDes.
Then, you immediately try to use pName[curLocX][curLocY], which evaluates to pName[1][1]. That doesn't exist. Same for pDes.
Did you want to use some other value for determining the dimensions of the arrays? If not, why bother making 2D arrays that are only going to hold 1 value when you can just make 1 string variable?