c ++分段故障循环

时间:2011-05-03 00:48:20

标签: c++ for-loop segmentation-fault

我在以下代码中遇到了分段错误:

   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帮助.....

1 个答案:

答案 0 :(得分:4)

作为一个完全盲目的猜测,没有2个数组的声明,由一个错误解决它们引起的。 j<=2应为j<2和/或count=1应为count=0。只是我尝试进行通灵调试。

更新:新版本不太清楚 - 你想要留下太多的想象力。没有对insertNode的调用,因此任何deref pointerArray的尝试都可能出现seg-fault。这是问题中的拼写错误,还是你所看到的段错误的原因?此外,最外层循环从1到7迭代 - 是否应该对应于pointerArray?如果是这样,如果你要调用insertNode传递i作为第二个参数,那么0 - 6可能会更有意义。你有编译的代码吗?