I have two problems with a PHP extension that I wrote that creates PHP arrays.

1) If I call my extension function that creates PHP arrays and returns them, unless I either �unset� or assign it to the empty string the process acts like there is a memory leak.

PHP:

For ($I = 0; $I < $count; $I++)
{
        $retCd = createArray(&$arr);
        unset($arr);  // for some reason this is necessary.
}

C Extension in createArray function:

zval *Arr = 0;

if (zend_parse_parameters(argc TSRMLS_CC, "z", &Arr) == FAILURE)
  return ;

if (!PZVAL_IS_REF(Arr))
{
  zend_error(E_ERROR, "The Arr parameter must be passed by reference");
  RETURN_NULL();
}

array_init(Arr);

if (add_assoc_string(Arr, (char *) szFieldName, (char *) szValue, 1) == FAILURE) {
. . .
}


What can I do in my extension to unset or clear the variable so that it doesn�t have to be done in the PHP script?

2) For some reason, after the PHP script finishes, the amount of memory as reported by Linux �top� does not go back down to it�s initial level. I notice this especially if I create large PHP arrays. This is very likely to be related to the previous problem.

Thanks in advance,

Bruce

_________________________________________________________________
From must-see cities to the best beaches, plan a getaway with the Spring
Travel Guide! http://special.msn.com/local/springtravel.armx

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



Reply via email to