Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как они опредляют,что объект нигде не используется, общий вопрос по программированию 
V
    Опции темы
scai
Дата 22.1.2007, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Неофит
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.1.2007
Где: г. Загорск

Репутация: нет
Всего: 2



вопрос в следующем: в некоем "независимом" участке программы обьект больше не нужен, как устроить так, чтобы этот участок смог прознать, не используется этот обьект где еще, нет ли на него указателей(?), чтобы освобождать или не освобождать память?
в java - понятно как, я вот с турбопаскалем морочусь... smile
--------------------
 
PM MAIL   Вверх
Shaggie
Дата 22.1.2007, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



По идее реализется это так - в самом объекте есть счетчик. При создании указателя на объект счетчик инкрементируется, указатель перестает указывать на объект - декрементируется. Каждый раз проверяется состояние счетчика, если он равен нулю - объект уничтожается.
Так оно в теории. Желаю удачи!


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Ivan Kolesnikov
Дата 22.1.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 9.3.2005
Где: г. Новокузнецк

Репутация: нет
Всего: 6



Цитата

По идее реализется это так - в самом объекте есть счетчик


Не все так просто, данный подход не обнаружет 2 объекта ссылающиеся друг на друга и на них нет ссылок из других блоков программы.
--------------------
PM MAIL ICQ   Вверх
Shaggie
Дата 22.1.2007, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Увы, тогда объекту нельзя ссылаться даже на самого себя!

Однако такой подход достаточно просто реализуется и шустро работает, при наличии прямых рук косяков не возникает.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
scai
Дата 22.1.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Неофит
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.1.2007
Где: г. Загорск

Репутация: нет
Всего: 2



Понятно: пишем процедуру/метод, который индексирует все счетчики, в случае чего освобождает память, а потом уж присваивает(себе народное добро=). 
А с двумя обьектами... это когда один "выписали", а потом другой и остаются они висеть в воздухе... мда.       так, что сделать?        я подумывал об том, чтоб каждый обьект в спец. список заносить(и дались мне эти списки), в котором к нему все, что на него ссылается, прицеплено и раз в три столетия через прогонять через процедуру очистки. Да, при больших обьемах накладно очень получится...


как все таки? это ведь, как я понимаю, общее место для многих программ.


п.с. можт знает кто, как джавовский сборщик мусора работает?
--------------------
 
PM MAIL   Вверх
maxim1000
Дата 22.1.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



достаточно контролировать все создания/удаления/изменения указателей на объекты
с обычными указателями этого не получится, поэтому используют "умные указатели" - объекты, которые в своих конструкторах, деструкторах и изменяющих методах обновляют количество указателей на объект

в C++ это реализуется без проблем (если только не начинать брать указатель на умный указатель)
в TP я не припоминаю только одного - отслеживания создания нового объекта путём копирования (т.е. конструктор копирования)

если он там есть, проблем быть не должно...


--------------------
qqq
PM WWW   Вверх
Void
Дата 22.1.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 3
Всего: 173





--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
scai
Дата 22.1.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Неофит
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.1.2007
Где: г. Загорск

Репутация: нет
Всего: 2



Думаю, что счетчик в указателе, в любом случае инициализируется через счетчик в объекте, а при изменении значения указателя, счетчик у обьекта найти несложно [только, интерфейс должен быть типа stchetchikable для всех обьектов], почему же тогда он(счетчик) дублируется в указателе?
Цитата

А с двумя объектами... это когда один "выписали", а потом другой и остаются они висеть в воздухе...

эта проблема всеж не решается. Или я крупно не понимаю чего-то.
---------------------------
[upd] пока писал да думал, пост с чудодейственной ссылкой проглядел. пойду смотреть

Это сообщение отредактировал(а) scai - 22.1.2007, 16:48
--------------------
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0710 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.