'main'已停止工作 - C ++ [dev ++]

时间:2017-12-19 21:48:40

标签: c++ crash binary-tree main

我的代码表现得非常奇怪。它有时有效,有时会崩溃。

崩溃时说:

  

问题导致程序无法正常工作

我的main

int main() {
    start();
    Read();

    cout << "Enter the code of the course: ";
    cin >> coursecode;
    cout << "\n1111111\n";
    searchCourse(coursecode);
    cout << "\n222222\n";

    return 0;
}

我在searchCourse函数的上方和下方写了两个couts,看看程序是否编译了所有的行。它确实编译了所有内容,最后它在崩溃之前打印222222。

start方法只创建一个BinaryTree对象数组,然后存储 学生数据(从文本文件中读取)根据他们的课程。

开始():

BinaryTree *a[10];

void start()
{
    for(int g=1;g<=10;g++)
    {
        a[g] = new BinaryTree(g);
    }
}

searchCourse():

void searchCourse(string code)
{
    for(int j=1;j<=count;j++)
    {
        if(a[j]->checkit(code)!=0)
        {
            a[j]->display();

            break;
        }
    }
}

BinaryTree.h中的Checkit():

bool checkit(string m)
{
    if (root==NULL)
        return false;
    else
        if(root->data.getCourse()==m)
            return true;
        else
            return false;
}

1 个答案:

答案 0 :(得分:0)

BinaryTree *a[10];
for(int g=1;g<=10;g++)
{
    a[g] = new BinaryTree(g);
}

会有内存异常。你有一个10的数组,你试图访问第11个元素(因为你去g<=10a[10]是第11个元素)。使用:

for(int g=0;g<10;g++)

代替。如果二进制树从1开始,您可能还必须new BinaryTree(g+1);

这是您的代码中其他位置的错误,例如for(int j=1;j<=count;j++)for(int j=0;j<count;j++)可能是您想要的)。

数组从0开始。Why does the indexing start with zero in 'C'?