|
Hi, The following code causes a 400K leak each time it is
called. It seems to occue in the following line: parser->parse(metaDataFile.c_str()); Has anyone had any similar parse leak issues or does this
code look file to you. Also could this code be improved in any way, I very new to
this xerces development. String function() { xercesc_2_4::XercesDOMParser*
parser = new
xercesc_2_4::XercesDOMParser(); if(parser == NULL) {
return ""; } parser->setValidationScheme(xercesc_2_4::XercesDOMParser::Val_Never);
// optional. parser->setDoNamespaces(false); // optional xercesc_2_4::ErrorHandler*
errHandler = (xercesc_2_4::ErrorHandler*) new xercesc_2_4::HandlerBase(); parser->setErrorHandler(errHandler); string metaDataFile =
GetMetadataFileName(submissionID); try {
// leak seems to occur here
parser->parse(metaDataFile.c_str()); } catch (const xercesc_2_4::XMLException& toCatch) {
char* message =
xercesc_2_4::XMLString::transcode(toCatch.getMessage());
std::cout << "Exception message is: \n" << message
<< "\n";
xercesc_2_4::XMLString::release(&message); } catch (const xercesc_2_4::DOMException& toCatch) {
char* message =
xercesc_2_4::XMLString::transcode(toCatch.msg);
std::cout << "Exception message is: \n" << message
<< "\n";
xercesc_2_4::XMLString::release(&message); } catch (...) {
std::cout << "Unexpected Exception \n"; } xercesc_2_4::DOMDocument*
xmlDoc = parser->getDocument();
if( NULL == xmlDoc ) {
std::cout<<"xml doc is null, quit\n"; } xercesc_2_4::DOMNode*
docNode = xmlDoc->getDocumentElement();
if( NULL == docNode ) {
std::cout<<"doc is null, quit\n"; } xercesc::DOMNodeList*
list; xercesc::DOMNode*
node; const XMLCh* n; char* xmlval = ""; string szXmlVal =
""; list = xmlDoc->getElementsByTagName(
XMLString::transcode(szTag.c_str()) ); node = list->item(0); if(
xercesc::DOMNode::ELEMENT_NODE == node->getNodeType() ) {
n = node->getFirstChild()->getNodeValue();
xmlval = xercesc_2_4::XMLString::transcode(n);
szXmlVal = xmlval;
xercesc_2_4::XMLString::release(&xmlval);
} //node->release(); //parser->resetDocumentPool(); delete parser; delete [] xmlval; delete errHandler; return
szXmlVal; } Can anyone help me remove this leak.
It is running in a service and is called every few seconds, so the leak gets
quite large quickly. Enda ________________________ Enda Mannion |
- Xerces Dom parser memory leak Mannion, Enda
- Re: Xerces Dom parser memory leak Alberto Massari
