运行 c++ 项目时出现 Clion 错误

Clion error while running c++ project

我有一个自己创建的 C++ 项目,但我遇到了一个奇怪的错误。我 运行 项目中大约有 50% 的时间出现错误

Process finished with exit code -1073741819 (0xC0000005)

我不知道为什么会这样。我只是 运行 自己创建了一个 Dijkstra 算法,并在控制台上打印了几行。数据永远不会改变,我只使用了几个字节的内存。我不明白为什么这个项目有时会运行,有时会给我一个错误。

您的图表最多可以有 9 个顶点:

Graph *G = new Graph(9);

我假设这意味着任何特定顶点的值都可以从 0 到 8,因为代码似乎使用该顶点作为各种向量的索引。

但是,当您在 Dijkstra::Dijkstra(Graph *G, int s) 中创建 previousVertex 向量时,出于某种原因,您给它的元素比顶点数少了一个:

previousVertex = vector<int>(V - 1); // V is the number of vertices in G
                                     //   which is 9 in your example project
                                     //   so it will have 8 elements and
                                     //   can be indexed with 0-7

但是你稍后用各种元素顶点值索引它:

previousVertex[v] = u; // I believe that `v` can have the value 8 at times

我认为您可能会越过 previousVertex 向量的末尾。我不知道如果它有 50% 的时间崩溃,您为什么无法在调试器中捕获它。