Forum Webscript.Ru
Программирование => PHP => Тема начата: unclebob от 17 Сентября 2005, 17:49:13
-
Hello all
$a=\'value\';
$b=&$a;
$a и $b в данном случае одно и то же, т.е. указатели на область памяти?
если делаем unset($b), то уничтожается только указатель, но не значение. А если unset($a)?
-
$b=&$a;
это означает что переменная $b это "жесткая" ссылка на переменную $a
при такой операции $a и $b стают "синонимами"
когда мы создаем переменную $b она регистрируется в таблице переменных но память на нее не выделяется
так как она ссылается на участок памяти в котором хранится значения $a
поэтому если мы удалим переменную $a то значение переменной останется, так как на него ссылается $b а удалиться только запись о переменной
значение удалиться только тогда когда на него уже ничего не ссылается
-
Спасибо, ясно. Просто хотел уточнить...
-
В мане это красной строкой написано.
-
В мане написано
$a=\'value\';
$b=&$a;
unset($b);
мол, при этом значение не будет уничтожено, это понятно, читать умею.
Вопрос был в том что если создать кучу ссылок на одно и то же значение, то среда будет отслеживать количество ссылок на область памяти при попытке unset и освобождать ее только при уничтожении последней ссылки, либо уничтожать в любом случае только ссылку.