2014-03-07 25 views
0

我有一個2d數組隊列。二維數組的彈出隊列

我想查看數組最頂端的元素。數組列表是類型爲int **的隊列。

int** target = arraylist.pop(); 

是正確的。然而,

for (int k = 0; k < cities; k++) 
    for (int m = 0; m < cities; m++) 
     if (targ[k][m] != 0) <----- segfault here 

這是我的首要功能:

template <class T> 

T Queue<T>::top() 
{ 
    return data[front]; 
} 

和我的隊列被聲明爲

Queue<int**> arraylist; 

我知道INT **並不一定意味着INT [X] [Y ],但我很想知道爲什麼會出現這種情況,以及我可以如何將隊列的最頂層條目設置爲2d數組變量。

+0

你確定你沒有超出界限,或者你的數組在第一時間被正確初始化了嗎? – 2014-03-07 05:21:04

+0

我檢查了k和m是否超出範圍。他們不是。我初始化了我放入隊列的2d數組和使用新的臨時目標數組。 – carriwitchet

+0

我懷疑只有那4行代碼才能確定地回答你的問題。請構建一個[**最小**,**完整**,測試和可讀示例](http://stackoverflow.com/help/mcve)併發布。 – Dukeling

回答

0

雖然不在您粘貼的代碼中,但我猜想您的Queue::push()的實現或您稱爲Queue::push()的地方會導致此問題。

您是否複製了您的數據實施Queue::push()

或者您複製一個指針並且指出的數據可能已經釋放?或者更復雜的是,你多次推動同一個指針,其中一個已經被你彈出並釋放?