Zeev Suraski wrote:
> 
> At 08:53 PM 5/17/2002, Robert Cummings wrote:
> >Let's say I do:
> >
> >     zval *newVar;
> >     MAKE_STD_ZVAL( newVar );
> >     ZEND_SET_SYMBOL( &EG(symbol_table), "varKey", newVar );
> >
> >and then I do:
> >
> >     MAKE_STD_ZVAL( newVar );
> >     ZEND_SET_SYMBOL( &EG(symbol_table), "varKey", newVar );
> >
> >This will overwrite my orignal newVar, however, will the original
> >newVar be garbaged collected or is this my responsibility now that
> >I'm out of PHP land? Also if it is auto garbage collected, is there
> >a way I can force garbage collection to run while I'm in a deep
> >recursion?
> 
> Whatever you register into the standard data structures, EG(symbol_table)
> included, is taken care of by the engine.  In that case, the old value will
> be destroyed as soon as you replace it in the 2nd SET_SYMBOL call.

To be honest I'm passing the return_value into my recursion
- is the same true of it? I ask because I watched my memory
consumption climb to over 500MB and all I use is
MAKE_STD_ZVAL( newVar ) and insert into some depth of the
recursion initially stored into return_value for the
calling function. My initial assumption was that indeed this
stuff is garbage collected... but maybe I'm doing something
wrong if this is collected at the moment of overwrite and
I'm seeing such massive allocations using top.

Cheers,
Rob.
-- 
.-----------------.
| Robert Cummings |
:-----------------`----------------------------.
| Webdeployer - Chief PHP and Java Programmer  |
:----------------------------------------------:
| Mail  : mailto:[EMAIL PROTECTED] |
| Phone : (613) 731-4046 x.109                 |
:----------------------------------------------:
| Website : http://www.webmotion.com           |
| Fax     : (613) 260-9545                     |
`----------------------------------------------'

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to