I have this program that enters an infinite loop. It creates a parser
and parses the xml file. I then delete the parser using delete. And so
on, over and over again.
Looking at the SZ column from ps (on AIX4.3.3) this number keeps
increasing. This suggests and memory leak or the parser resources are
getting released. I am calling delete on the parser.
Can someone help?
int
main( int ac, char* av[] )
{
DOMParser *parser;
if ( ac != 2 ){
cerr << "usage: " << av[0] << " xml file" << endl;
return 1;
}
try
{
XMLPlatformUtils::Initialize();
}
catch( const XMLException& e )
{
cerr << "Error during initialization! :\n"
<< e.getMessage() << "\n";
return 1;
}
for ( ;; ){
parser = new DOMParser;
parser->setValidationScheme(DOMParser::Val_Always);
DOMTreeErrorReporter *errReporter = new
DOMTreeErrorReporter();
parser->setErrorHandler(errReporter);
//
// Parse the XML file, catching any XML exceptions that might
propogate
// out of it.
//
bool errorsOccured = false;
try
{
parser->parse( av[1] );
int errorCount = parser->getErrorCount();
if (errorCount > 0) errorsOccured = true;
}
catch( const XMLException& e )
{
cerr << "An error occured during parsing file: " << av[1]
<< endl << "Exception message is: " << endl << DOMString(e.getMessage())
<< endl;
errorsOccured = true;
}
catch (const SAXParseException& e)
{
cerr << "An SAXParseException error occured during
parsing, got SAXParseException " << DOMString(e.getMessage()) << "\n" ;
errorsOccured = true;
}
catch (...)
{
cerr << "\nUnexpected exception during parsing: '" <<
av[1] << "'\n";
errorsOccured = true;
}
if ( errorsOccured || errReporter->getSawErrors() ){
cerr << "Parse unsuccessful!" << endl;
delete errReporter;
delete parser;
XMLPlatformUtils::Terminate();
return 1;
}
delete errReporter;
delete parser;
cout << "Parse successful!" << endl;
sleep(2);
} /* for */
XMLPlatformUtils::Terminate();
return 0;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]