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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

18 фев 2009, 13:36

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

А искать ссылки где-то в памяти.... Это ж надо знать, где что было создано, вызвано и присвоено... Это просто нереально по-моему.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

18 фев 2009, 13:48

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

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

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

Изменение физических адресов - это другая проблема. Опиши один из возможных use case'ов такой ситуации, и я, возможно, помогу тебе с решением.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

18 фев 2009, 14:31

&quot писал(а):А искать ссылки где-то в памяти.... Это ж надо знать, где что было создано, вызвано и присвоено... Это просто нереально по-моему.
Нубом чтоли становлюсь? Странно. Чего это я такой бред загнул? Хорошо хоть ты его разобрал и подсказал проще реализуемую альтернативу. Спасибо.
&quot писал(а):поиск циклов в дереве - это абсудр, ибо дерево по своему определению является ориентированным графом
Это называется: то что было криво написано, так же криво и прочитали. Я имелл ввиду, что граф деревом может и не быть, а имаеть или цилы, или больше одного "корня", или то и дргое сразу. Но может и быть деревом - тогда циклов нет. Но заранее это не известно, соответсвенно использовать определение дерева нельзя.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

18 фев 2009, 14:34

&quot писал(а):Изменение физических адресов - это другая проблема. Опиши один из возможных use case'ов такой ситуации, и я, возможно, помогу тебе с решением.
Я кажется уже все описал. Ладно повторю. Есть динамический массив. Есть указатель на его элмент. Сам элемеент перемещается на другое место или весь массив получает другой адрес начала. Указатель будет ссылаться не туда, куда надо. Надо присвоить такому указателю новый адрес элемента.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

12 мар 2009, 20:45

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

13 мар 2009, 14:13

WinMain, там проблема в отслеживании циклических ссылок. Если делать в лоб, то получится очень сложный подход. Я с самого начала сказал, что самым правильным будет кардинально поменять архитектуру вместо того, чтобы попытаться приделать новые костыли к существующей.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить