gpt4 book ai didi

php - 如果 SplObjectStorage 在对象仍然附加的情况下破坏,它是否会留下内存泄漏引用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:05 25 4
gpt4 key购买 nike

如果 SplObjectStorage 实例在仍然附加了一些对象的情况下析构,它是先隐式地分离对象,还是由于 SplObjectStorage 的引用而导致内存泄漏那些悬挂的物体?我正在尝试确定是否有必要使用用户态代码“在销毁之前分离任何剩余的东西”以防止此类内存泄漏。

$storage = new SplObjectStorage();
$x = new stdClass();
$y = new stdClass();
$storage->attach($x);
$storage->attach($y);
$storage = null;
// did not explicitly detach $x and $y... does $storage's destruction do it?
// or do the zval counts on $x and $y now off by one?
$x = null;
$y = null;
// at this point, are there two dangling references to $x and $y,
// simply because $storage did not dereference from them before destroying itself?

最佳答案

简单的答案是:它应该释放这两个对象。

如果不是这种情况,则应将其视为错误。

测试:创建一个带有析构函数的类,并确保它被调用。

关于php - 如果 SplObjectStorage 在对象仍然附加的情况下破坏,它是否会留下内存泄漏引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com