我在循环中使用字面字符串作为第二个值时,遇到了 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";
}
?>