Ji-Yong,
Please direct your question to the Xerces-J User mailing list:
[EMAIL PROTECTED]
----- Original Message -----
From: "Ji-Yong D. Chung" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, February 18, 2001 10:29 PM
Subject: heap allocation
> 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.
>