Aaaaaaaaaaaaaaaaaah alright... I think that I might reconsider my job and become a goat keeper :D:D:D Thanks a lot Alberto, really : )
Alberto Massari wrote: > > radada ha scritto: >> Hi Alberto, >> >> It actually works (again :p) though I don't understand why because the >> clear >> method is supposed to call the destructors (according to the >> documentation >> of the vector file found on the Internet). >> > > You are confusing "calling the destructor" with "deleting an object (and > calling its destructor)"; std::vector<aClass> will invoke ~aClass() when > clearing the vector, but std::vector<aClass*> will invoke the destructor > for a pointer, that does nothing (and not "delete ptr" as you thought) > > Alberto > >> Again : really thank you. >> I think I'll post here soon again. >> Thanks a lot man. >> >> >> Alberto Massari wrote: >> >>> radada ha scritto: >>> >>>> Ouh, no answers so far... >>>> Should I just give up? >>>> >>>> >>> No, you should just delete all the items in the vector >>> DocumentXML::m_oListeElementXML in the destructor, just before invoking >>> m_oListeElementXML.clear() >>> >>> Alberto >>> >>>> Thanks. >>>> >>>> >>>> >>>> radada wrote: >>>> >>>> >>>>> Hi Alberto and as always, thanks for your answer. >>>>> >>>>> God I'm lame :D:D I didn't see that I dod not released the XMLCh in >>>>> the >>>>> GetFlux method. >>>>> >>>>> However, even with this, I still get a memroy leak. I joined the log >>>>> so >>>>> that you can see bay yourself the results of the ps command --> >>>>> http://www.nabble.com/file/p23478308/log.zip log.zip >>>>> The strangest thing is that, when I delete and release all the objects >>>>> at >>>>> the end of the program`(i.e. release of the factory), the memory still >>>>> grows : >>>>> >>>>> Conso MEMOIRE AVANT RELEASE FACTORY >>>>> PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM >>>>> COMMAND >>>>> 28476 pts/2 A 0:18 419 3884 4576 32768 125 692 2.5 0.0 >>>>> batchJTO >>>>> XMLFactory::releaseFactory() >>>>> Destructeur de XMLFactory >>>>> bJTOTest::afficherMemoire() >>>>> Conso MEMOIRE APRES RELEASE FACTORY >>>>> PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM >>>>> COMMAND >>>>> 28476 pts/2 A 0:18 432 3932 4624 32768 125 692 2.5 0.0 >>>>> batchJTO >>>>> >>>>> >>>>> I really don't know what's happening... >>>>> >>>>> The memory leak could seem small, but when I use this code inside the >>>>> whole package, I really get a strong memory leak. >>>>> >>>>> I hope you'll find a little bit more time to check this code. If you >>>>> can't >>>>> or don't see something obvious, I'll throw in the towel :-(( >>>>> >>>>> >>>>> Alberto Massari wrote: >>>>> >>>>> >>>>>> A few points that I noticed by reading the code: >>>>>> 1) in ElementXML::rechercherValeurAttribut you call >>>>>> XMLString::release(&l_poValue), but l_poValue comes from a call to >>>>>> m_poDOMElement->getAttribute, and should not be released >>>>>> 2) DocumentXML::getFlux doesn't release the l_poString string >>>>>> allocated >>>>>> by writeToString >>>>>> 3) DocumentXML::getFlux stores the result of the serialization in a >>>>>> char* m_pcBuffer that is not deleted in the destructor for >>>>>> DocumentXML; >>>>>> it destroys a previous buffer if called twice on the same object, but >>>>>> it >>>>>> will not clean the last serialization output >>>>>> >>>>>> Alberto >>>>>> >>>>>> radada ha scritto: >>>>>> >>>>>> >>>>>>> There you go : http://www.nabble.com/file/p23421942/batch.tar.gz >>>>>>> batch.tar.gz , and as always : thanks a lot :-D >>>>>>> >>>>>>> >>>>>>> Alberto Massari wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Could you post your code in a more standard format, like tar.gz? >>>>>>>> Thanks, >>>>>>>> Alberto >>>>>>>> >>>>>>>> radada ha scritto: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> Hi there (again :-() >>>>>>>>> >>>>>>>>> It may be a little bit long, so I'd like to apologize first. >>>>>>>>> >>>>>>>>> I'm trying (for my work) to add a functional layer to the xerces >>>>>>>>> library >>>>>>>>> so >>>>>>>>> that other developers can use it by calling some more functional >>>>>>>>> methods. >>>>>>>>> The point is also to raise some particular type of exception so >>>>>>>>> that >>>>>>>>> it >>>>>>>>> can >>>>>>>>> be easily reused. >>>>>>>>> >>>>>>>>> When I directly implement some code to create a small XML file >>>>>>>>> (see >>>>>>>>> previous >>>>>>>>> posts), it works perfectly. All my objects are released, and I'm >>>>>>>>> happy. >>>>>>>>> (the >>>>>>>>> code is here >>>>>>>>> http://www.nabble.com/file/p23402427/bjtotestGood.cxx >>>>>>>>> bjtotestGood.cxx ) >>>>>>>>> >>>>>>>>> But I try to encapsulate that into a more functional way, I get a >>>>>>>>> memory >>>>>>>>> leak. >>>>>>>>> >>>>>>>>> First I though of doing some nice Oriented Object Programming and >>>>>>>>> subclass >>>>>>>>> some of the xerces objects (DOMElement and DOMDocument >>>>>>>>> especially), >>>>>>>>> but I >>>>>>>>> found out that these classes are pure virtual classes and I can't >>>>>>>>> subclass >>>>>>>>> them without redefining all the pure virtual methods. >>>>>>>>> I tried to subclass the implementation objects (i.e. >>>>>>>>> DOMElementImpl >>>>>>>>> and >>>>>>>>> DOMDocumentImpl) but I'm stuck with all the Factories and >>>>>>>>> Singeltons >>>>>>>>> (DOMIplementation and DOMIplementationRegirsty mainly). >>>>>>>>> >>>>>>>>> So I decide to create some functional objects from scratch >>>>>>>>> (XMLElement >>>>>>>>> and >>>>>>>>> XMLDocument) that would not inherit from DOMElement and >>>>>>>>> DOMDocument, >>>>>>>>> but >>>>>>>>> have theses objects as members of my classes. But when I do that, >>>>>>>>> and >>>>>>>>> I >>>>>>>>> re-implement the small program to generate some small XML files, I >>>>>>>>> get >>>>>>>>> a >>>>>>>>> memory leak... I just don't understand, since I do exactly the >>>>>>>>> same >>>>>>>>> thing >>>>>>>>> that I was doing first. I joined the source code here so that, if >>>>>>>>> you >>>>>>>>> feel >>>>>>>>> willing to help, you can get the code : >>>>>>>>> http://www.nabble.com/file/p23402427/batchTest.rar batchTest.rar >>>>>>>>> >>>>>>>>> I cleaned the code (we use several libraries) so that it could >>>>>>>>> compile >>>>>>>>> and >>>>>>>>> run on any (i hope) UNIX server. I run it on an AIX 5.1 >>>>>>>>> >>>>>>>>> Thanks a lot if you got here, and thanks a lot in advance for your >>>>>>>>> help. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: [email protected] >>>>>> For additional commands, e-mail: [email protected] >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> >>> >>> >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > > -- View this message in context: http://www.nabble.com/Memory-leak-over-and-over...-tp23402427p23516254.html Sent from the Xerces - C - Dev mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
