Re: [xml] Memory leak / cleanup missing after node creation.
- From: Igor Zlatkovic <igor zlatkovic com>
- To: Jose Commins <axora myrealbox com>
- Cc: xml gnome org
- Subject: Re: [xml] Memory leak / cleanup missing after node creation.
- Date: Tue, 25 May 2004 17:17:51 +0200
On 25.05.2004 16:31, Jose Commins wrote:
I see! So in effect xmlBufferCreateSize does indeed allocate the
amount of memory I specify (my xml output buffers never go beyond 4K, so
I allocate 8192 just in case).
Don't worry about the size. As soon as the data is larger than the
buffer, the buffer will grow but it will keep its new size. If the same
data arrives in a future pass, it will fit into the buffer this time. A
call to, for instance xmlBufferEmpty, will not restore the buffer's
initial size.
In my app I keep the buffers persistent throughout threads, so I
don't constantly create/destroy buffers, just re-use them on the next
pass. Seeing as I have to use xmlBufferEmpty or xmlBufferShrink after
each use, am I right in thinking that xmlBufferShrink is more optimal
since it doesn't clear the data (I am guessing here)?
No. xmlBufferShrink will remove data from the beginning of the buffer.
It will not trim the unused memory from its end, as you might be led to
believe. Unless you are working with large data chunks which cannot fit
in your computer's memory, you don't need this function.
You should do what you did, call xmlBufferEmpty when you are done
working with the data in the buffer. This will empty the buffer, but
keep the allocated memory. Without calling xmlBufferEmpty, your each
pass would be appending data to what the buffer contained in the
previous pass. xmlNodeDump appends data to the buffer rather than
replacing it, of course. How else would its recursive call on node's
children work?
By the way, I have to reiterate Igor that you have been of
invaluable help and knowledge on these matters and I send my thanks again.
A thank expressed in cold beer pitchers is most welcome. :-)
Ciao,
Igor
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]