Getting Process returned -1073741819 (0xC0000005) Error with no error message

-1

I'm writing a C++ console-app in code::blocks, I'am getting this message "Process returned -1073741819 (0xC0000005)" and no error info

I found out the error comes from the next code Before i fix this, it doesn't even show anything only the memory message...

It should cut a string into pieces and set each element to its correspondant space in "arregloPeliculas" array.

    void cargarPeliculas(){
    //Declaracion de variables
    string cadena = "", genero, titulo, strCast;
    int  i,  numPeli, anio, duracion, cantidad;
    bool adActorRespuesta;
    Actor busquedaDeActor;
    registrosPeliculas = 0;
    ifstream inFile;
    inFile.open("peliculas.txt");
    ifstream inFileActores;
    inFileActores.open("actores.txt");
    while(getline(inFile, cadena)){

        //El proceso para obtener los datos de las peliculas es muy similar y la explicaciones es igual en todos los casos
        //Primero obtener una linea de inFile(Actores) y la guardamos en cadena
        //Numero de peli
        stringstream caster(cadena.substr(0, cadena.find(' ')));
        caster >> numPeli;//Se guarda en un int real
        arregloPeliculas[i].setNumPeli(numPeli); //Se Pasa numPeli a setNumPeli de arregloPeliculas
        cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);//Se modifica la cadena original, ahora cadena se corta desde donde encuentr ale primer espacio hasta el final menos 1

        //Anio
        stringstream casterAnio(cadena.substr(0, cadena.find(' ')));
        casterAnio >> anio;
        arregloPeliculas[i].setAnio(anio);
        cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);

        //Duracion
        stringstream casterDuracion(cadena.substr(0, cadena.find(' ')));
        casterDuracion >> duracion;
        arregloPeliculas[i].setDuracion(duracion);
        cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);

        /*//Genero
        arregloPeliculas[i].setGenero(cadena.substr(0, cadena.find(' ')));
        cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);

        */
        //Cantidad de actores
        stringstream  casterCantidad(cadena.substr(0, cadena.find(' ')));
        casterCantidad >> cantidad;
        cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);


        //Obtener id's en arreglo de int
        int id[cantidad];//Se crea un arreglo de int con el tamaño [cantidad]
        for(int x = 0; x < cantidad; x++){//Iteramos para seguir recortando la cadena y guardar cada uno de los id en el archivo en un nuevo espacio del arreglo id
            stringstream casterId(cadena.substr(0, cadena.find(' ')));
            casterId >> id[x];
            cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
        }


        //Agregar titulo
        titulo = cadena;
        arregloPeliculas[i].setTitulo(titulo);


        //Enlazar actores
        //1.- Buscar actor por id de id[indice] en arregloActores
        for(int buscador = 0; buscador < cantidad; buscador++){

            for(int buscadorActor = 0; buscadorActor < sizeof(arregloActores)/sizeof(arregloActores[0]); buscadorActor++){
                if(arregloActores[buscadorActor].getId() == id[buscador]){
                    //Actor encontrado por Id
                    //2.- Al encontrarlo, crear objeto Actor, setear ID con id de arregloActores y Nombre con nombre de arregloActores
                    busquedaDeActor.setId(id[buscador]);
                    busquedaDeActor.setNombre(arregloActores[buscadorActor].getNombre());
                    //3.- Pasar el objeto Actor creado anteriormente a arregloPeliculas[i].setActor
                    adActorRespuesta = arregloPeliculas[i].setActor(busquedaDeActor);
                    if(adActorRespuesta == true){
                        cout << "Actor agregado con exito!"<<endl;
                    }
                    else{
                        cout <<"No se pudo agregar al actor..."<<endl;
                    }

                }
            }
        }
        cadena = "";
        i++;
        registrosPeliculas++;
    }
    inFile.close();
    inFileActores.close();
}

I don't know what to change from code, I've been searching for solutions but it seems that every same error is different

EDIT: Final code looks like this, it was due to scope pollution

void cargarPeliculas(){
//Declaracion de variables
string cadena = "", genero, titulo, strCast;
int  iterador = 0,  numPeli, anio, duracion, cantidad;
bool adActorRespuesta;
Actor busquedaDeActor;
registrosPeliculas = 0;
ifstream inFile;
inFile.open("peliculas.txt");
ifstream inFileActores;
inFileActores.open("actores.txt");
while(getline(inFile, cadena)){

    //El proceso para obtener los datos de las peliculas es muy similar y la explicaciones es igual en todos los casos
    //Primero obtener una linea de inFile(Actores) y la guardamos en cadena
    //Numero de peli
    stringstream caster(cadena.substr(0, cadena.find(' ')));
    caster >> numPeli;//Se guarda en un int real
    arregloPeliculas[iterador].setNumPeli(numPeli); //Se Pasa numPeli a setNumPeli de arregloPeliculas
    cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);//Se modifica la cadena original, ahora cadena se corta desde donde encuentr ale primer espacio hasta el final menos 1

    //Anio
    stringstream casterAnio(cadena.substr(0, cadena.find(' ')));
    casterAnio >> anio;
    arregloPeliculas[iterador].setAnio(anio);
    cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);

    //Duracion
    stringstream casterDuracion(cadena.substr(0, cadena.find(' ')));
    casterDuracion >> duracion;
    arregloPeliculas[iterador].setDuracion(duracion);
    cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);

    //Genero
    arregloPeliculas[iterador].setGenero(cadena.substr(0, cadena.find(' ')));
    cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);


    //Cantidad de actores
    stringstream  casterCantidad(cadena.substr(0, cadena.find(' ')));
    casterCantidad >> cantidad;
    cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);


    //Obtener id's en arreglo de int
    int id[cantidad];//Se crea un arreglo de int con el tamaño [cantidad]
    for(int x = 0; x < cantidad; x++){//Iteramos para seguir recortando la cadena y guardar cada uno de los id en el archivo en un nuevo espacio del arreglo id
        stringstream casterId(cadena.substr(0, cadena.find(' ')));
        casterId >> id[x];
        cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
    }


    //Agregar titulo
    titulo = cadena;
    arregloPeliculas[iterador].setTitulo(titulo);


    //Enlazar actores
    //1.- Buscar actor por id de id[indice] en arregloActores
    for(int buscador = 0; buscador < cantidad; buscador++){

        for(int buscadorActor = 0; buscadorActor < sizeof(arregloActores)/sizeof(arregloActores[0]); buscadorActor++){
            if(arregloActores[buscadorActor].getId() == id[buscador]){
                //Actor encontrado por Id
                //2.- Al encontrarlo, crear objeto Actor, setear ID con id de arregloActores y Nombre con nombre de arregloActores
                busquedaDeActor.setId(id[buscador]);
                busquedaDeActor.setNombre(arregloActores[buscadorActor].getNombre());
                //3.- Pasar el objeto Actor creado anteriormente a arregloPeliculas[i].setActor
                adActorRespuesta = arregloPeliculas[iterador].setActor(busquedaDeActor);
                if(adActorRespuesta == true){
                    cout << "Actor agregado con exito!"<<endl;
                }
                else{
                    cout <<"No se pudo agregar al actor..."<<endl;
                }

            }
        }
    }
    cadena = "";
    iterador++;
    registrosPeliculas++;
}
inFile.close();
inFileActores.close();

}

c++
memory
codeblocks
asked on Stack Overflow Oct 24, 2020 by Luis Garcia • edited Oct 27, 2020 by Luis Garcia

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0