Forum Webscript.Ru

Программирование => PHP => Тема начата: unclebob от 17 Сентября 2005, 17:49:13

Название: Выделение и освобождение памяти
Отправлено: unclebob от 17 Сентября 2005, 17:49:13
Hello all


$a=\'value\';
$b=&$a;


$a и $b в данном случае одно и то же, т.е. указатели на область памяти?

если делаем unset($b), то уничтожается только указатель, но не значение. А если unset($a)?
Название: Выделение и освобождение памяти
Отправлено: Slastik от 17 Сентября 2005, 23:48:55
Цитировать
$b=&$a;

это означает что переменная $b это "жесткая" ссылка на переменную $a
при такой операции $a и $b стают "синонимами"
когда мы создаем переменную $b она регистрируется в таблице переменных но память на нее не выделяется
так как она ссылается на участок памяти в котором хранится значения $a

поэтому если мы удалим переменную $a то значение переменной останется, так как на него ссылается $b а удалиться только запись о переменной

значение удалиться только тогда когда на него уже ничего не ссылается
Название: Выделение и освобождение памяти
Отправлено: unclebob от 18 Сентября 2005, 12:51:29
Спасибо, ясно. Просто хотел уточнить...
Название: Выделение и освобождение памяти
Отправлено: hanslinger от 18 Сентября 2005, 14:14:50
В мане это красной строкой написано.
Название: Выделение и освобождение памяти
Отправлено: unclebob от 18 Сентября 2005, 14:50:12
В мане написано

$a=\'value\';
$b=&$a;
unset($b);

мол, при этом значение не будет уничтожено, это понятно, читать умею.

Вопрос был в том что если создать кучу ссылок на одно и то же значение, то среда будет отслеживать количество ссылок на область памяти при попытке unset и освобождать ее только при уничтожении последней ссылки, либо уничтожать в любом случае только ссылку.