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

'main' has stopped working - C++ [dev++]

本文关键字:C++ dev++ 停止工作 main      更新时间:2023-10-16

我的代码确实很奇怪。有时起作用,在其他时间崩溃。

崩溃时说:

问题导致该程序停止正确工作

我的main

int main() {
    start();
    Read();
    cout << "Enter the code of the course: ";
    cin >> coursecode;
    cout << "n1111111n";
    searchCourse(coursecode);
    cout << "n222222n";
    return 0;
}

我在搜索操作功能上方和下方写了两个couts,以查看程序是否编译了所有行。它确实确实编译了所有内容,最后它在崩溃之前打印了222222。

开始方法仅创建一个二进制对象的数组,然后存储根据他们的课程,学生数据(从文本文件中读取)。

start():

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

搜索Course():

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;
}
BinaryTree *a[10];
for(int g=1;g<=10;g++)
{
    a[g] = new BinaryTree(g);
}

将有一个内存例外。您的数组为10,并且您正在尝试访问第11个元素(因为您要直到g<=10,而a[10]是第十一个元素)。使用:

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开始。为什么索引在'c'?

中以零开头