PHPで単純な線形リンクリストの実装を書いています。これは基本的に練習用です...プロジェクトオイラー問題の一部です。メモリリークを回避するためにガベージコレクションを支援するためにunset()を使用する必要があるかどうかはわかりません。LLLのデストラクタにheadとtempのunset()を含める必要がありますか?
必要なときにノードを削除するためにunset()を使用することを理解していますが、いつでも一般的なクリーンアップにunset()が必要ですか?
unset()を使用しなくても、スクリプトが終了するとメモリマップは解放されますか?
このSOの質問を見ましたが、まだ少しわかりません。参照の作成に関連するメモリリークを回避するためにunset()を使用する必要がないという答えはありますか?
私はPHP5を使用しています。
コードは次のとおりです。LLLクラスの特定のポイントで$tempと$this->headを作成するときに、参照を作成しています。
class Node
{
public $data;
public $next;
}
class LLL
{
// The first node
private $head;
public function __construct()
{
$this->head = NULL;
}
public function insertFirst($data)
{
if (!$this->head)
{
// Create the head
$this->head = new Node;
$temp =& $this->head;
$temp->data = $data;
$temp->next = NULL;
} else
{
// Add a node, and make it the new head.
$temp = new Node;
$temp->next = $this->head;
$temp->data = $data;
$this->head =& $temp;
}
}
public function showAll()
{
echo "The linear linked list:<br/> ";
if ($this->head)
{
$temp =& $this->head;
do
{
echo $temp->data . " ";
} while ($temp =& $temp->next);
} else
{
echo "is empty.";
}
echo "<br/>";
}
}
ありがとう!