运行 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% 的时间崩溃,您为什么无法在调试器中捕获它。
我有一个自己创建的 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% 的时间崩溃,您为什么无法在调试器中捕获它。