C++ C++;分割故障的迷宫求解算法
任务是创建一个随机生成的迷宫,然后解决它,问题是每当我递归地搜索迷宫中的出口时,我在运行时会得到一个分段错误。大部分cout用于调试 主文件(错误仍然存在的位置)C++ C++;分割故障的迷宫求解算法,c++,C++,任务是创建一个随机生成的迷宫,然后解决它,问题是每当我递归地搜索迷宫中的出口时,我在运行时会得到一个分段错误。大部分cout用于调试 主文件(错误仍然存在的位置) #包括 #包括 #包括 #包括“Main.h” #包括“Maze.h” int main(int argc,char*argv[]) { //处理命令行参数并为随机数设定种子 //发电机,如有必要 无符号整数种子; 如果(argc==4) { 种子=静态_投射(atoi(argv[1]); 问题是: bool **wasHere;
#包括
#包括
#包括
#包括“Main.h”
#包括“Maze.h”
int main(int argc,char*argv[])
{
//处理命令行参数并为随机数设定种子
//发电机,如有必要
无符号整数种子;
如果(argc==4)
{
种子=静态_投射(atoi(argv[1]);
问题是:
bool **wasHere;
for(int i = 0; i < theMaze.getHeight(); i++)
{
for(int j = 0; i < theMaze.getWidth(); j++)
{
wasHere[i][j] = false;
bool**wasHere;
对于(int i=0;i
原因是:
wasHere
是指向bool
的指针的未初始化指针。然后取消对第一个指针的引用,导致未定义的行为(例如崩溃…).seg故障发生在哪一行代码上?此外,您的代码不包含delete
语句,因此可能会泄漏内存。使用向量。如果启用边界检查,它们甚至可能捕获您的错误。使用cerr
调试消息。cout
会被缓冲,因此在崩溃之前发送的消息可以保持不被释放对输出进行重新编译。cerr
流没有此问题。更好的方法是使用调试器并在崩溃后进行回溯。但是对于调试消息,有时很有用,请使用cerr
。第5行是#包括“Maze.h”这是不对的。请标出这行。@ Soosisie代码> BoOL *在这里;<代码>…代码> WAY[i] [j]=false < /COD>——什么时候它变成了2维数组的<代码> BoOL/COD>?我不太理解这个概念,因为我对C++编程很陌生。
bool **wasHere;
for(int i = 0; i < theMaze.getHeight(); i++)
{
for(int j = 0; i < theMaze.getWidth(); j++)
{
wasHere[i][j] = false;