2011-05-03 6 views
-1

j'obtiens une erreur de segmentation dans le code suivant:C++ Segmentation Fault boucle

Node *pointerArray[6]; 
    int onesNeighbor[]={2,3,6}; 

    Node *createNode(int localDistance)//////creates a node 
    { 
Node *newNode; 
newNode=new Node; 
newNode->wasVisited=false; 
newNode->shortestDistance=localDistance; 


return newNode; 
    } 

    void insertNode(Node *n,int i)//////////////////connects nodes to the 
    {/////////////////////////////////////////array of pointers 
    pointerArray[i]=n; 
    } 


for(i=1;i<7;i++) 
{ 
    if(i==1){ 
    n=createNode(0); 
    cout<<i<<"\t"<<n->shortestDistance<<"\t"; 
    for(int j=0;j<=2;j++) 
    cout<< onesNeighbor[j]<<","; 
    cout<<endl; 


    for (count = 1; count < 2; count++) 
    { 
    current = pointerArray[count]; 

    if (count == 1) 
    { 
     for (int j = 0; j <= 2; j++) 
     { 
      lowest = current->shortestDistance; 
      current = pointerArray[onesNeighbor[j]]; 

      if (current->shortestDistance < lowest) 
      { 
       lowest = current->shortestDistance; 
       closestNeighbor = onesNeighbor[j]; 
      } 
     } 
     } 
     } 

..... Aide PLease

+2

quelle ligne est-ce la panne de segment qui se passe? – TheFuzz

+2

Nous aurions besoin de voir les déclarations de 'pointerArray' et' onesNeighbor' pour être en mesure de vous dire exactement, mais fondamentalement, l'un de ces tableaux est soit trop petit, soit un pointeur sauvage - probablement le dernier. –

+0

COde tel qu'écrit actuellement n'atteindra jamais la boucle interne, puisque count sera 2 au début de la première itération. – Joe

Répondre

4

Comme une supposition complètement aveugle, sans que les déclarations des 2 tableaux , causée par une erreur d'une seule adresse. Soit j<=2 devrait être j<2 et/ou count=1 devrait être count=0. Juste ma tentative de débogage psychique.

Mise à jour: La nouvelle version n'est pas beaucoup plus claire: vous aimez laisser trop de place à l'imagination. Il n'y a aucun appel à insertNode, donc toute tentative de deref pointerArray peut segmenter. Est-ce une faute de frappe dans la question, ou la cause de la faute de segment que vous voyez? En outre, la boucle la plus externe itère de 1 à 7 - est-ce censé correspondre au pointerArray? Si c'est le cas, 0 - 6 pourrait avoir plus de sens si vous appelez insertNode en passant i comme deuxième paramètre. Avez-vous du code qui compile?