1

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

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

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();
}
4

1 回答 1

1

函数中的“temp”Node* ManipulateArray::findMemAddress(string nodeName)尚未初始化。在函数中int main(),您应该在取消引用之前检查“开始”的值。希望它有效!

于 2012-11-10T00:56:26.367 回答