偶尔的分段错误

时间:2012-11-10 00:37:01

标签: c++ nodes

一如既往地感谢您的时间和帮助!不确定这里发生了什么,但它可能是显而易见的,所以我想我会让别人看看。

这是我的代码。现在运行查找具有指定名称的节点的地址作为字符串。然后返回此节点对象的地址。有时它工作正常(大多数情况下),但其他运行给我一个分段错误。谁能明白为什么?

class ManipulateArray
{
    public:
    Node* formArray();
    Node* findMemAddress(string);
    private:
    GetFileInfo g;
};

Node* ManipulateArray::formArray()
{
    Node *list = new Node[48];
    string null = "*";

    for(int i = 0; i<48; i++)
    {
        for(int j = 0; j<6; j++)
        {   
        string info = g.returnInfo(i,j);

            switch(j)
                {
            case 0:
            list[i].setNodeName(info);
            break;
            case 1:
            if(info.compare(null) == 0)
            {list[i].getAttachedNode(j) = 0;}
            break;
                }
        }
    }   

    return list;
}

Node* ManipulateArray::findMemAddress(string nodeName)
{
    Node* memoryAddress = 0;
    Node* temp;
    for(int i = 0; i<48; i++)
    {
        string name = temp[i].getNodeName();
        temp = formArray();

        if(name.compare(nodeName) == 0)
        {
            memoryAddress = &temp[i];
            break;
        }
    }
    return memoryAddress;
}


int main()
{
    ManipulateArray z;
    //Node *start;
    //Node *finish;

    Node* start;
    start = z.findMemAddress("F1");
    cout << start->getNodeName();
}

1 个答案:

答案 0 :(得分:1)

&#39;温度&#39;函数Node* ManipulateArray::findMemAddress(string nodeName)尚未初始化。 在功能int main()中,您应该检查&#39; start&#39;的值。在取消引用它之前。希望它有效!