Отслеживание ссылок

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Отслеживание ссылок

Re: Отслеживание ссылок

Romeo » 13 мар 2009, 14:13

WinMain, там проблема в отслеживании циклических ссылок. Если делать в лоб, то получится очень сложный подход. Я с самого начала сказал, что самым правильным будет кардинально поменять архитектуру вместо того, чтобы попытаться приделать новые костыли к существующей.

Re: Отслеживание ссылок

WinMain » 12 мар 2009, 20:45

Прочитал тему - ну сплошное переливание из пустого в порожнее...
Из всего выше сказанного делаю вывод:
- нужна фабрика классов,
- нужны счётчики ссылок,
- нужны идентификаторы типов объектов,
- нужны шаблоны для само-освобождения объектов...
Что мешает использовать СОМ-технологию? Там как раз всё это присутствует: и фабрики классов, и счётчики ссылок, и идентификаторы типов (GUID-ы). Есть специальные шаблоны (смарт-поинтеры) для автоматического отключения от объекта. А самое главное, что для этого программисту не нужно прилагать никаких усилий, - вся необходимая инфраструктура формируется визардом ещё на стадии создания проекта. Ну а что ещё нужно для решения задачи? Только грамотно имплементировать методы в собственных интерфейсах...

Re: Отслеживание ссылок

atavin-ta » 18 фев 2009, 14:34

&quot писал(а):Изменение физических адресов - это другая проблема. Опиши один из возможных use case'ов такой ситуации, и я, возможно, помогу тебе с решением.
Я кажется уже все описал. Ладно повторю. Есть динамический массив. Есть указатель на его элмент. Сам элемеент перемещается на другое место или весь массив получает другой адрес начала. Указатель будет ссылаться не туда, куда надо. Надо присвоить такому указателю новый адрес элемента.

Re: Отслеживание ссылок

atavin-ta » 18 фев 2009, 14:31

&quot писал(а):А искать ссылки где-то в памяти.... Это ж надо знать, где что было создано, вызвано и присвоено... Это просто нереально по-моему.
Нубом чтоли становлюсь? Странно. Чего это я такой бред загнул? Хорошо хоть ты его разобрал и подсказал проще реализуемую альтернативу. Спасибо.
&quot писал(а):поиск циклов в дереве - это абсудр, ибо дерево по своему определению является ориентированным графом
Это называется: то что было криво написано, так же криво и прочитали. Я имелл ввиду, что граф деревом может и не быть, а имаеть или цилы, или больше одного "корня", или то и дргое сразу. Но может и быть деревом - тогда циклов нет. Но заранее это не известно, соответсвенно использовать определение дерева нельзя.

Re: Отслеживание ссылок

Romeo » 18 фев 2009, 13:48

Описанный мной алгоритм решают проблемы нахождения циклов в графе. Абсолютно не важно является ли он связным или является ли он деревом. Я не знаю зачем ты написал о дереве, так как мой алгоритм не налагает такого условия, более того, поиск циклов в дереве - это абсудр, ибо дерево по своему определению является ориентированным графом без циклов.

Алгоритм позволяет найти цикл и больше ничего. Как ты будешь зачищать циклически связанные объекты - это решать тебе, так как у меня нет исходников твоего страшного проекта. Но то, что эти объекты ты найдёшь - это алгоритм тебе гарантирует.

По циклам мне добавить нечего, ибо и так писал около получаса, пытаясь всё изложить предельно детально. Всё, что я попытаюсь сказать ещё, будет лишь перефразировка написанного выше - а это бесполезная трата времени.

Изменение физических адресов - это другая проблема. Опиши один из возможных use case'ов такой ситуации, и я, возможно, помогу тебе с решением.

Re: Отслеживание ссылок

Naeel Maqsudov » 18 фев 2009, 13:36

Тут предлагается не искаль указатели, а сложить их в кучу (в недрах этого менеджера). Пусть все (другие объекты, и просто процедуры и функции) обращаются за ссылками к некому менеджеру, который ведет учет всего. Причем как для сожнания нового экземпляра, так и при использовании уже существующего. (Кстати в этом менеджере проще будет обеспечить потокозащищенность, если вдруг какой-то из объектов будет пересоздаваться в параллельном потоке).

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

Re: Отслеживание ссылок

atavin-ta » 18 фев 2009, 13:33

Есть ориентированный граф. Он может быть как связным, так и не связным. Возможен и частный случай дерева. Но граф может и не имть как дерево единого корня. Кроме того, он может иметь циклы. Ребра хранятся в виде указтелей. Надо реализовать сбор мусора и при изменении физических адресов вершин графа исправление всех указателей. В такой постановке можешь подсказать, как всё это пишется? И ссылку я просил не сетевую, а название, автора, издательство. Или хотя-бы только автора и название. gogle здесь как поможет?

Re: Отслеживание ссылок

Romeo » 18 фев 2009, 13:27

Ну можно обязать все классы выставлять метод, который будет возвращать указатели на все объекты, на которые ссылается данный объект. В этом случае объекты и ссылки между ними как раз и образуют граф. Другой вопрос это то, что реализация не самой простой получается. Но ведь и хочешь ты не совсем тривиальных вещей добиться.

Re: Отслеживание ссылок

atavin-ta » 18 фев 2009, 13:19

&quot писал(а):Ещё раз тебе говорю, внимательно прочти моё предыдущее сообщение. Там написано, как тебе можно поступить.
У меня как у Жиглова глаз замылился. Не понимаю, как этот алгоритм применить для поиска указателей на себя в ситуации, когда метод не знает всех идентификаторов, от которых следует искать.

Re: Отслеживание ссылок

Romeo » 18 фев 2009, 13:18

Я не знаю конкретной ссылки на учебник. Погугли - этого добра в интернете более, чем достаточно.

Вернуться к началу