c++ - 偶尔的段错误

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

最佳答案

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

关于c++ - 偶尔的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318027/

相关文章:

c++ - 函数模板重载问题

c++ - 关于多线程我应该了解什么以及何时使用它,主要是在c++中

c++ - 根据继承用法,以下哪项是不允许的?

php - 如何为树结构开发数据库模式(有向无环图)

java - 实现深度优先搜索: incompatible objects

javascript - 使用 javascript 在 HTML 中显示 XML 数据

c++ - 为什么要在空格中插入数字和特殊字符?

c++ - 没有wx主程序的wxWidgets——如何编码?

java - 如何从 Json Tree 获取特定节点而不迭代整个列表

java - 为什么我的二叉树不显示正在插入的内容?