如果在循环内将文字字符串用作第二个值,我遇到了 gmp_cmp 中的内存泄漏。解决方法是先初始化,然后使用变量。我无法生成最小代码示例,它更复杂一些,但我能够按如下方式修复它
<?php
$x = gmp_init(strval(mt_rand()));
// 根据周围代码,可能存在泄漏
while (true)
{
if (!gmp_cmp($x, '1'))
print 'one'."\n";
}
// 通常不存在泄漏
$one = gmp_init('1');
while (true)
{
if (!gmp_cmp($x, $one))
print 'one'."\n";
}
?>