I have downloaded Xerces source code
and I was reading through some documentation.
I read that DOM objects should be allocated
on stack (basically via local variables of funcions) --
I understand why the policy is there. Removing
and adding nodes of DOM tree can cause havoc
with C++ pointers.
My question is: is there a way (even a hacker's way)
around this restriction? Is there a way to allocate
DOM document on the heap instead of
on the stack without causing system crashes?
.
My problem is that (1) the document must
outlast the routine that created it -- but the automatic
variable mechanism will surely cause my document object to
vanish when local variables go out of scope.
(2) before a second routine takes over, I need
to place the referene to the document somewhere
(due to the nature of what I am doing, I cannot
just pass the result of that creation to the second
routine).
Similarly, if I want to get a child node, I should be able
to do one of the following:
=============================
------
DOM_Node *nd = &(doc -> getChildNodes());
delete nd; // since I am doing things on the heap
------
or have a class wrapper around DOM documement
so that delete is only called implicitly:
class wrapper
{
DOM_Node nd;
};
============================
It seems to me that the underlying reference
counting mechanism should work to ensure that
no bad things happen, even if I were to the preceding.
(provided that I have a properly matching destructor
for every constructor).
From what I understand about stack and heap,
I can't see anything wrong with it, provided I carefully
use delete operator
Am I wrong?
I would really be grateful for any comments/help.