xerces-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse Pelton" <...@PKC.com>
Subject RE: DOMWriter Questions
Date Fri, 09 Apr 2004 11:52:23 GMT
>From the Xerces API documentation:

  XMLCh* XMLString::transcode ( const char *const toTranscode ) [static]

  Transcodes a string to native code-page.

  NOTE: The returned buffer is dynamically allocated and is the
responsibility of
  the caller to delete it when not longer needed. You can call
XMLString::release to
  release this returned buffer.

So every time you call transcode(), you should be saving the returned
pointer in order to release its memory. The following will leak the
memory allocated by transcode():

  someCall(XMLString::transcode("some string"));

If the examples really use this idiom, something is wrong, either in the
documentation (which I believe to be correct) or in the samples.

________________________________

	From: Monica Lau [mailto:mllau2004@yahoo.com] 
	Sent: Thursday, April 08, 2004 11:43 PM
	To: xerces-c-dev@xml.apache.org
	Subject: Re: DOMWriter Questions
	
	
	Hi all,
	 
	Thanks for all your responses.  In the following code snippet
(taken from DOMCreation and from DOMPrint), I just want to make sure
that I've deleted all the memory approriately.  Does the
"getDOMImplementation()" function allocate memory on the heap?  (I've
looked at the online documentation, but couldn't find much about this.)

	 
	Thanks again for your time and help.
	 
	Regards,
	Monica
	 
	 
	DOMImplementation *impl =
	
DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("Co
re"));
	
	DOMDocument *mydoc =
	impl->createDocument(0,XMLString::transcode("company"),0);
	DOMElement *rootElem = mydoc->getDocumentElement();
	DOMElement *prodElem =
	mydoc->createElement(XMLString::transcode("product"));
	rootElem->appendChild(prodElem);
	DOMText *prodDataVal =
	mydoc->createTextNode(XMLString::transcode("Xerces-C"));
	   prodElem->appendChild(prodDataVal);
	
	DOMWriter *writer = impl->createDOMWriter();
	cout <<
	XMLString::transcode(writer->writeToString(*mydoc)) <<
	endl;
	
	// Delete Memory
	writer->release();
	mydoc->release();
	delete impl;

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org


Mime
View raw message