我有一个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 :(得分:0)
虽然不在您粘贴的代码中,但我猜您的Queue::push()
或您调用Queue::push()
的地方的工具会导致此问题。
您是否复制了Queue::push()
的工具中的数据?
或者您复制指针并且指向的数据可能已被释放?或者更复杂的是,你多次按下同一个指针,其中一个已被你弹出并释放?