[2004年09月10日 18:20 UTC] hkmaly at bigfoot dot com
Description: ------------ If I play with references, I found php doesn't properly free all memory in arrays with references ... for example don't free all memory in local variables of function. By repeating calling that function, leak can lead to consumation of all allowed memory. BTW, submited also as http://bugs.gentoo.org/show_bug.cgi?id=63559 Reproduce code: --------------- <?php function testLeak() { $a=array("jablka","hrusky","petr"=>"zeli"); foreach($a as $k=>$v) { $b[$k]=&$a; $b[$k]['names']=&$a; } return($b); } echo memory_get_usage()."\n"; for($i=0;$i<200000;$i++) { testLeak(); echo memory_get_usage()."\n"; } ?> Expected result: ---------------- Something as 20720 21816 22144 22144 22144 .... 22144 22144 22144 Actual result: -------------- 20720 21816 22144 ..... ..... ..... 16775400 16775728 16776056 16776384 Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 32 bytes) in /castle/hkmaly/programy/php/test_leak.php on line 6 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2004年09月15日 10:52 UTC] sniper@php.net
[2004年09月15日 17:02 UTC] hkmaly at bigfoot dot com
|