Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类结构中的PHP内存泄漏_Php_Oop_Memory Leaks_Iterator - Fatal编程技术网

类结构中的PHP内存泄漏

类结构中的PHP内存泄漏,php,oop,memory-leaks,iterator,Php,Oop,Memory Leaks,Iterator,希望有人能帮我解决这个问题,有点难堪 所以做了一些关于图像和多边形的乱七八糟的事情,但是得到了一个奇怪的内存泄漏 因此,我有一个名为canvas的包装类,它只保存我的图像资源,另一个名为polygon的包装类用于管理和操作另一个名为顶点的类,它只是一个x和y坐标数组的容器 非常直截了当 我注意到我遇到了一个内存中断错误,在canvas类上跟踪到一个名为getPoly的方法,该方法返回一个polygon实例,该实例在construct上设置顶点类 如果使用此方法,即使在取消设置变量后,图像资源的内

希望有人能帮我解决这个问题,有点难堪

所以做了一些关于图像和多边形的乱七八糟的事情,但是得到了一个奇怪的内存泄漏

因此,我有一个名为canvas的包装类,它只保存我的图像资源,另一个名为polygon的包装类用于管理和操作另一个名为顶点的类,它只是一个x和y坐标数组的容器

非常直截了当

我注意到我遇到了一个内存中断错误,在canvas类上跟踪到一个名为getPoly的方法,该方法返回一个polygon实例,该实例在construct上设置顶点类

如果使用此方法,即使在取消设置变量后,图像资源的内存也不会返回,但如果您使用新关键字创建多边形实例并取消设置,则可以

canvas类还有另一个名为destroy的方法,该方法:

imagedestroy($this->canvas);
所以用这个:

$img  = new Image_Canvas($width, $height);
$poly = $img->getPoly();
$img->destroy();
//Memory not returned
但是

现在奇怪的是它实际上不是一个图像资源问题,这个问题似乎来自于顶点类实现迭代器的事实,如果顶点没有实现迭代器,那么内存通常以任何方式返回。顶点最好实现迭代器以获得有用的循环帮助


任何帮助或以前的经验都会很好。

事实证明我是个白痴,在代码中将大变量分配给类属性时有一个明显的错误,这导致了内存泄漏


很好的编程0,noobery 1

您能提供Image_Polygon类源代码吗?否则很难判断问题出在哪里。我怀疑问题出在顶点类上,好像它没有实现迭代器,那么就没有内存泄漏。好的,那么您可以提供顶点类源代码,也许我们可以提供帮助
$img  = new Image_Canvas($width, $height);
$poly = new Image_Polygon($width, $height)
$img->destroy();
//Memory is returned

public function getPoly($width= null, $height =null)
{
     if(!is_int($width) || !is_int($height))
     {
        return new Image_Polygon($this->width, $this->height);
     }
     else
     {
        return new Image_Polygon($width, $height);
     }
}