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