2016-02-28 44 views
-2

我在C++中創建了一個項目,這是我自己創建的,我遇到了一個奇怪的錯誤。約50%我運行該項目的時代,我得到一個錯誤運行C++項目時發生Clion錯誤

進程退出代碼爲-1073741819(0000005)

完了我不知道爲什麼會這樣。我只是運行一個我自己製作的Dijkstra算法,並在控制檯上打印幾行代碼。數據永遠不會改變,我只使用幾個字節的內存。我不明白爲什麼項目有時會運行,有時會給我一個錯誤。

+2

發生這種情況是因爲您的程序中存在一個錯誤....如果沒有該程序,我們無法提供幫助。 –

+0

你可以在這裏粘貼你的代碼。 –

+0

如果是那麼小,你可以在這裏發佈。這是人們掃描的極限,但它可能是明顯的。 –

回答

1

你的曲線圖可以具有多達9個verticies:

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%的時間內崩潰。

+0

我認爲這一定是問題所在,因爲它現在看起來似乎不再被粉碎了。然而,它仍然困擾着我如何在「運行」時間中僅擊敗50%,並在「調試器」上擊敗0次 – dimitris93

+0

使用MSVC++(有免費的VS 2015社區版)進行試用。 Visual Studio的C++庫對容器訪問和迭代器使用進行了出色的調試檢查。我不認爲GCC有這些類型的診斷。 –

+0

雖然我的確在使用previousVertex [8]。這絕對是一個問題。我有'V-1'的原因是因爲沒有先前的起點頂點,所以我想讓我們放入'V-1',而不是意識到這可以用作索引,而不僅僅是大小。 – dimitris93