Как использовать unset () для этого Линейного Связанного Списка в PHP - PullRequest
0 голосов
/ 12 июня 2010

Я пишу простую реализацию линейного связанного списка в 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/>&nbsp;&nbsp;";
        if ($this->head)
        {               
            $temp =& $this->head;
            do
            {
                echo $temp->data . " ";
            } while ($temp =& $temp->next);
        } else
        {
            echo "is empty.";
        }
        echo "<br/>";
    }
}

Спасибо!

1 Ответ

2 голосов
/ 12 июня 2010

Карта памяти освобождается после того, как скрипт завершается, даже если вы не используете снята с охраны ()

Да - когда скрипт заканчивается, все выделенных им ресурсов памяти освобождаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...