如果在迴圈內使用字面字串作為第二個值,我在 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";
}
?>