[xml] Help, dont get back allocated memory!
- From: "Viktor Stoehr"<viktor stoehr pyte de>
- To: xml gnome org
- Subject: [xml] Help, dont get back allocated memory!
- Date: Mon, 24 Aug 2009 20:00:28 +0200 (CEST)
Hello,
I have a xml file i want to parse. This part works so far.
But my problem is that my xml file has a size of 20 MiB and more. So, if i work with such a file, then i can
see that the allocated memory is not given back to the system after i call the mentioned free operations
xmlFreeDoc(doc) and xmlFreeParserCtxt(). As far as i just create the doc tree and call the free operations i
could "repair" the memory usage by calling malloc and free the allocated memory, but as soon as i touch the
node contents in any way (see for-loop) i can't get the memory given back to the system!
And here is my code sample:
xmlParserCtxtPtr ctxt; /* the parser context */
xmlDocPtr doc; /* the resulting document tree */
/* create a parser context */
ctxt = xmlNewParserCtxt();
if (ctxt == NULL) {
fprintf(stderr, "Failed to allocate parser contextn");
return -12;
}
/* parse the file, activating the DTD validation option */
doc = xmlCtxtReadFile(ctxt, nodeCoordinateSource, NULL, 0);
/* check if parsing suceeded */
if (doc == NULL) {
fprintf(stderr, "Failed to parse %sn", nodeCoordinateSource);
} else {
// /* check if validation suceeded */
// if (ctxt->valid == 0)
// fprintf(stderr, "Failed to validate %sn", nodeCoordinateSource);
xmlNode *root = xmlDocGetRootElement(doc);
/* get NodeRecords */
if(root->type == XML_ELEMENT_NODE) {
int found;
xmlAttr *attr;
const xmlChar *match = (const xmlChar *)"dimensions";
for(attr = root->properties, found = 0; attr && !found; attr = (xmlAttr *)attr->next) {
if(!xmlStrcmp(attr->name, match)) {
dimensions = atoi((const char *)attr->children->content);
found = 1;
}
}
attr = NULL;
root = NULL;
}
/* free up the resulting document */
xmlFreeDoc(doc);
xmlFreeParserCtxt(ctxt);
/* repair memory usage */
ptr = (void *)malloc(1024*1024);
free(ptr);
}
Has anyone an idea how i can fix this?
Regards
Viktor
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]