Автор Тема: Выделение и освобождение памяти  (Прочитано 2910 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн unclebob

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выделение и освобождение памяти
« : 17 Сентября 2005, 17:49:13 »
Hello all


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


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

если делаем unset($b), то уничтожается только указатель, но не значение. А если unset($a)?
запивайте пиво водкой, чтобы жизнь была короткой
запивайте водку пивом, чтобы стать большим красивым

Оффлайн Slastik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 101
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.sproekt.kiev.ua
Выделение и освобождение памяти
« Ответ #1 : 17 Сентября 2005, 23:48:55 »
Цитировать
$b=&$a;

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

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

значение удалиться только тогда когда на него уже ничего не ссылается
FAQ OFF =)

Оффлайн unclebob

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выделение и освобождение памяти
« Ответ #2 : 18 Сентября 2005, 12:51:29 »
Спасибо, ясно. Просто хотел уточнить...
запивайте пиво водкой, чтобы жизнь была короткой
запивайте водку пивом, чтобы стать большим красивым

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Выделение и освобождение памяти
« Ответ #3 : 18 Сентября 2005, 14:14:50 »
В мане это красной строкой написано.

Оффлайн unclebob

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выделение и освобождение памяти
« Ответ #4 : 18 Сентября 2005, 14:50:12 »
В мане написано

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

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

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28