C++在try-catch语句处崩溃



所以,我正在做一个家庭作业,我们必须测试我们的课。我们被禁止使用stl.:)问题是在test_2程序崩溃。这一切都有效,直到它进入主try语句。当它应该跳到异常时,它就会崩溃。知道为什么会发生这种事吗?提前感谢!:)

void test_2()    //
{
    int tomb[400];
    for(unsigned int j=0;j<400;j++){
        tomb[j]=j;
    }
   cout <<"array loaded n";
    Buffer<int> test2(40,"test2.txt","w");
    Buffer<int> test21(40,"test21.txt","w");    // 40 meretu buffer
   cout << "bufferek letrehozva n";
    for(unsigned int j=0;j<400;j++){
        test2[j]=tomb[j];
    }
    cout << "buff loaded n";
  /*  for(unsigned int j=0;j<400;j++){
       cout << test2[j] << endl;
    } */
    test21=test2;
    cout << "copy constr ran n";
    unsigned int i=0;
    for(unsigned int j=0;j<400;j++){
        if(i==39){for(i=0;i<40;i++){       //40 size buff
                    test21.printfile(test21[i]);}
                    i=0;}
        else i++;
    }
  throw "gets here";

}
int main()
{
    try
    {
        int number;
        cin >> number;        // nr of the test
        switch (number)
        {
        case 1:
            test_1();     // file_test
            break;
        case 2:
            test_2();   // copyconst_test
            break;     // crashes here
        case 3:
            test_3();
            break;
        }

    }
    catch (exception& e)
    {
        cerr << e.what() << endl;
    }
    catch (int i)
    {
        cerr << i << endl;
    }
    catch (const char* s)
    {
       cerr << s << endl;
    }
    catch (...)
    {
        cerr << "*** Nagy baj van! ****" << endl;
    }
    return 0;
}

已解决

我制作了一个大小为40的obj,并加载了400int。这个过程使test2对象的大小为720(因为重载时它的大小是原来的两倍),所以我使两个不同大小的对象相等。

Buffer<int> test2(40,"test2.txt","w");
        // first buffer
   cout << "bufferek maden";
    for(unsigned int j=0;j<400;j++){
        test2[j]=tomb[j];            //load buffer
    }
    Buffer<int> test21(test2.getSize(),"test21.txt","w");   //make the second buffer 

最新更新