Сегментация С ++ для цикла - PullRequest
0 голосов
/ 03 мая 2011

Я получаю ошибку сегментации в следующем коде:

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

PLease Help .....

1 Ответ

4 голосов
/ 03 мая 2011

Как абсолютно слепое предположение, без объявлений 2-х массивов, вызванных отключением одной ошибкой, обращающейся к ним.Либо j<=2 должно быть j<2 и / или count=1 должно быть count=0.Просто моя попытка экстрасенсорной отладки.

Обновление: новая версия не намного яснее - вам нравится слишком сильно оставлять воображениеВызовов insertNode нет, поэтому любая попытка разыменовать pointerArray может вызвать сбой.Это опечатка в вопросе или причина ошибки, которую вы видите?Кроме того, самый внешний цикл повторяется от 1 до 7 - это должно соответствовать pointerArray?Если это так, 0 - 6 может иметь больше смысла, если вы собираетесь вызывать insertNode, передавая i в качестве второго параметра.У вас есть код, который компилируется?

...