Я пишу простую реализацию линейного связанного списка в PHP. Это в основном просто для практики ... часть проблемы Project Euler . Я не уверен, должен ли я использовать unset () , чтобы помочь в сборке мусора, чтобы избежать утечек памяти. Должен ли я включить unset () для head и temp в деструктор LLL?
Я понимаю, что буду использовать unset () для удаления узлов, когда захочу, но является ли unset () необходимым для общей очистки в любой момент?
Карта памяти освобождается после завершения скрипта, даже если вы не используете unset ()?
Я видел этот ТАК вопрос , но я все еще немного неясен. Является ли ответ, что вам просто не нужно использовать unset (), чтобы избежать утечек памяти, связанных с созданием ссылок?
Я использую PHP 5 .. кстати.
Сброс ссылок в PHP
Учебное пособие по PHP
Вот код - я создаю ссылки, когда создаю $ temp и $ this-> head в определенных точках класса LLL:
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/>";
}
}
Спасибо!