Allocazione di memoria con TinyXML2 (C++)

di il
9 risposte

Allocazione di memoria con TinyXML2 (C++)

Buongiorno.
Ho creato un progetto in c++ che mi legge degli url di file XML da un database, me li salva su un array, li legge sequenzialmente con tinyXML2, li interpeta e inserisce nel database i dati interpetati.

Tutto funziona perfettamente, finchè i file sono pochi.
In questo momento quando va a loaddare (con var.LoadFile("nomefile.xml");) il 23° file, il programma crasha.
Tramite gestione risorse ho capito che il problema è l'allocazione della memoria, che sembra non si resetti fra un file XML e l'altro.

Come posso risolvere?

9 Risposte

  • Re: Allocazione di memoria con TinyXML2 (C++)

    Non sono un esperto di TinyXML2, ma una domanda mi sorge spontanea: chiudi i files dopo averli aperti e utilizzati?
  • Re: Allocazione di memoria con TinyXML2 (C++)

    L'unico comando disponibile con TinyXML2 è var.Clear(), che l'ho messo prima del loadFile... quindi presumo di si, anche se dalla Memory in gestione risorse non sembra..
  • Re: Allocazione di memoria con TinyXML2 (C++)

    Essendo C++, non è forse sufficiente distruggere l'oggetto?
  • Re: Allocazione di memoria con TinyXML2 (C++)

    Come lo distruggo?
  • Re: Allocazione di memoria con TinyXML2 (C++)

    daniele430 ha scritto:


    Come lo distruggo?


    Dipende: che armi hai a disposizione?

    Intendevo:
    
    delete var;
    
    Chiaramente se l'oggetto è allocato dinamicamente (new)
  • Re: Allocazione di memoria con TinyXML2 (C++)

    La variabile è dichiarata così:
     tinyxml2::XMLDocument xml;
    mettendo
    delete xml; 
    non compila...
  • Re: Allocazione di memoria con TinyXML2 (C++)

    daniele430 ha scritto:


    La variabile è dichiarata così:
     tinyxml2::XMLDocument xml;
    mettendo
    delete xml; 
    non compila...


    Direi che devi riguardare un po' di teoria.

    Come ho detto: se allochi dinamicamente (new)..... questo dovrebbe bastarti.
  • Re: Allocazione di memoria con TinyXML2 (C++)

    Ho un evoluzione nel progetto...
    Ora si ferma al 22° file e mi scrive "Out of memory (Needed 8196 bytes)"
  • Re: Allocazione di memoria con TinyXML2 (C++)

    daniele430 ha scritto:


    Ho un evoluzione nel progetto...
    Ora si ferma al 22° file e mi scrive "Out of memory (Needed 8196 bytes)"
    Ripeto: se non allochi dinamicamente l'oggetto e lo distruggi quando lo hai utilizzato (per ogni file quindi) la memoria continua a riempirsi fino a che quella disponibile finisce.

    Quella classe non prevede una funzione di flush dei dati caricati, a quanto pare.
Devi accedere o registrarti per scrivere nel forum
9 risposte