描述:

下面的测试脚本可以运行10次,但可以崩溃(分段错误),可以运行400000次,而不应崩溃。

在docker上使用php 7.2(版本17.09.0-ce-mac35(19611))
没有扩展名。

测试脚本:

<?php
class Lim {
    public $id;
    public $inv;
    public $fi;
    function __construct($id) {
        $this->id = $id;
        $this->inv = new Inv($this);
    }
};

class Inv {
    public $inv;
    public $fi;
    function __construct($inv) { $this->inv = $inv; }
}

$max = 400000;
//$max = 10;

$lim0 = new Lim(0);
$limp = $lim0;
for ($i=1; $i<$max; $i++) {
    $lim = new Lim($i);
    $lim->fi = $limp->inv;
    $limp->inv->fi = $lim;
    $limp = $lim;
}

有谁知道为什么?
谢谢

最佳答案

您正在创建新的$lim,但不破坏旧的。因此,您的内存不足。

加上这个

unset($lim);


$limp = $lim;

关于php - php崩溃,对象过多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47784690/

10-13 03:37