Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Простой вопрос про память


Автор: spirits25 29.2.2012, 15:37
Есть классы A, A2 и B. Есть объекты c и d.
В начале 
Код
c = A()
d = B()
d.setObject(c)

Затем такой код
Код
c = A2()
d.setObject(c)

Вопрос: очистится ли (сборщиком мусора) память за первым объектом "c" (созданным классом A()), ведь после помещения в "с" другого объекта (А2) на объект класса А больше ссылок нет? можно так делать, не боясь, что объект класса A будет висеть где-то в памяти?

Автор: Daevaorn 29.2.2012, 16:38
Цитата(spirits25 @  29.2.2012,  16:37 Найти цитируемый пост)
Вопрос: очистится ли (сборщиком мусора) память за первым объектом "c" (созданным классом A()), ведь после помещения в "с" другого объекта (А2) на объект класса А больше ссылок нет? можно так делать, не боясь, что объект класса A будет висеть где-то в памяти? 

Тут у вас ошибка в логике. Если в методе setObject объект, на который ссылается `c` куда-то сохраняется, то после ссылок уже как минимум 2.

Автор: spirits25 1.3.2012, 08:27
Цитата(Daevaorn @  29.2.2012,  16:38 Найти цитируемый пост)
Тут у вас ошибка в логике. Если в методе setObject объект, на который ссылается `c` куда-то сохраняется, то после ссылок уже как минимум 2.

Но ведь он заменяется потом d.setObject©, где с уже второй объект?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)