2014-03-07 3 views
0

2 차원 배열의 큐가 있습니다.2d 배열의 팝하는 큐

배열의 최상위 항목 요소를 살펴보고 싶습니다. 배열 목록은 int ** 유형의 대기열입니다.

이 맞습니다. 그러나

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]; 
} 

내가 INT는 ** 반드시 INT [X] [Y를 의미하지 않는다 알고

Queue<int**> arraylist; 

나의 큐 선언 ],하지만 이것이 왜 그런지 그리고 큐의 최상위 항목을 2 차원 배열 변수로 설정하기 위해 할 수있는 일이 궁금합니다.

+0

범위를 벗어나지 않았습니까, 아니면 어레이가 처음에 올바르게 초기화 되었습니까? –

+0

k와 m이 범위를 벗어 났는지 확인했습니다. 그들은 아니었다. 나는 내가 큐를 ​​넣은 2 차원 배열과 새로운 것을 사용하는 임시 배열을 초기화했다. – carriwitchet

+0

필자는 4 줄의 코드 만 주어진다면 누구나 확실하게 질문에 대답 할 수 있을지 의심 스럽다. [** 최소 **, ** 완료 **, 테스트되고 읽을 수있는 예] (http://stackoverflow.com/help/mcve)를 작성하고 대신 게시하십시오. – Dukeling

답변

0

붙여 넣기 코드에는 없지만 Queue::push()의 구현이나 사용자가 Queue::push()이라고 부르는 곳에서이 문제가 발생합니다.

Queue::push() 구현시 데이터를 복사 했습니까?

또는 포인터를 복사하면 데이터가 누출되었을 수 있습니다. 또는 더 복잡하게, 당신은 동일한 포인터를 여러 번 누른 그들 중 하나가 팝업 및 릴리스되었습니다?