Процесс c ++ возвратил -1073741819 (0xC0000005) - PullRequest
0 голосов
/ 21 марта 2020

Вот весь код. Я знаю, что проблема где-то в функции hozzaad, но я не знаю, чтобы отладить ее. Я хочу создать динамический массив c 2d с точно столбцами vagonszam, но количество строк различается.

#include <iostream>
#include <fstream>
#include <string.h>
#include <cstdlib>

using namespace std;

class Vonat{
    int vagonszam, maxtomb;
    int **vagonok;
    int *seged;
    enum szallitmany {szen, fa, ko} ;
public:
    void beolvas(int x);
    Vonat(): vagonszam(0), maxtomb(0) {}
    void kiir();
    void hozzaad(int **vagonok, int i, string szallitmany);
};

void Vonat::hozzaad(int **vagonok, int i, string szallitmany)
{
    ++vagonok[i][0];
    seged = (int *) realloc(vagonok[i], ((vagonok[i][0]+1)*sizeof(int)));
    seged[vagonok[i][0]]=1;
}

void Vonat::beolvas(int x)
{
    char szovegesallomany[]="beVagonTartalma";
    szovegesallomany[15]=x+'0';
    szovegesallomany[16]='\0';
    strcat(szovegesallomany, ".txt");
    ifstream f(szovegesallomany);
    f>>vagonszam>>maxtomb;

    vagonok = new int*[vagonszam];

    string szallitmany;

    for(int i=0;i<vagonszam;i++)
    {
        vagonok[i] = new int[1];
        vagonok[i][0]=0;

        do
        {
            f>>szallitmany;
            cout<<szallitmany<<" ";
            hozzaad(vagonok, i, szallitmany);
        }
        while(szallitmany!="*");
    }


    f.close();
}


void Vonat::kiir()
{
    cout<<vagonszam<<" "<<maxtomb<<endl;
}

int main()
{
    Vonat v_52164;
    v_52164.beolvas(1);
    v_52164.kiir();
    Vonat v_54587;
    v_54587.beolvas(2);
    v_54587.kiir();
    return 0;
}

В этом коде что-то не так, потому что после запуска он получает сообщение об ошибке, указанное ранее.

Спасибо всем, кто пытается мне помочь, всего наилучшего.

...