Тут предлагается не искаль указатели, а сложить их в кучу (в недрах этого менеджера). Пусть все (другие объекты, и просто процедуры и функции) обращаются за ссылками к некому менеджеру, который ведет учет всего. Причем как для сожнания нового экземпляра, так и при использовании уже существующего. (Кстати в этом менеджере проще будет обеспечить потокозащищенность, если вдруг какой-то из объектов будет пересоздаваться в параллельном потоке).
А искать ссылки где-то в памяти.... Это ж надо знать, где что было создано, вызвано и присвоено... Это просто нереально по-моему.
Отслеживание ссылок
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Описанный мной алгоритм решают проблемы нахождения циклов в графе. Абсолютно не важно является ли он связным или является ли он деревом. Я не знаю зачем ты написал о дереве, так как мой алгоритм не налагает такого условия, более того, поиск циклов в дереве - это абсудр, ибо дерево по своему определению является ориентированным графом без циклов.
Алгоритм позволяет найти цикл и больше ничего. Как ты будешь зачищать циклически связанные объекты - это решать тебе, так как у меня нет исходников твоего страшного проекта. Но то, что эти объекты ты найдёшь - это алгоритм тебе гарантирует.
По циклам мне добавить нечего, ибо и так писал около получаса, пытаясь всё изложить предельно детально. Всё, что я попытаюсь сказать ещё, будет лишь перефразировка написанного выше - а это бесполезная трата времени.
Изменение физических адресов - это другая проблема. Опиши один из возможных use case'ов такой ситуации, и я, возможно, помогу тебе с решением.
Алгоритм позволяет найти цикл и больше ничего. Как ты будешь зачищать циклически связанные объекты - это решать тебе, так как у меня нет исходников твоего страшного проекта. Но то, что эти объекты ты найдёшь - это алгоритм тебе гарантирует.
По циклам мне добавить нечего, ибо и так писал около получаса, пытаясь всё изложить предельно детально. Всё, что я попытаюсь сказать ещё, будет лишь перефразировка написанного выше - а это бесполезная трата времени.
Изменение физических адресов - это другая проблема. Опиши один из возможных use case'ов такой ситуации, и я, возможно, помогу тебе с решением.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Нубом чтоли становлюсь? Странно. Чего это я такой бред загнул? Хорошо хоть ты его разобрал и подсказал проще реализуемую альтернативу. Спасибо." писал(а):А искать ссылки где-то в памяти.... Это ж надо знать, где что было создано, вызвано и присвоено... Это просто нереально по-моему.
Это называется: то что было криво написано, так же криво и прочитали. Я имелл ввиду, что граф деревом может и не быть, а имаеть или цилы, или больше одного "корня", или то и дргое сразу. Но может и быть деревом - тогда циклов нет. Но заранее это не известно, соответсвенно использовать определение дерева нельзя." писал(а):поиск циклов в дереве - это абсудр, ибо дерево по своему определению является ориентированным графом
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Я кажется уже все описал. Ладно повторю. Есть динамический массив. Есть указатель на его элмент. Сам элемеент перемещается на другое место или весь массив получает другой адрес начала. Указатель будет ссылаться не туда, куда надо. Надо присвоить такому указателю новый адрес элемента." писал(а):Изменение физических адресов - это другая проблема. Опиши один из возможных use case'ов такой ситуации, и я, возможно, помогу тебе с решением.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Прочитал тему - ну сплошное переливание из пустого в порожнее...
Из всего выше сказанного делаю вывод:
- нужна фабрика классов,
- нужны счётчики ссылок,
- нужны идентификаторы типов объектов,
- нужны шаблоны для само-освобождения объектов...
Что мешает использовать СОМ-технологию? Там как раз всё это присутствует: и фабрики классов, и счётчики ссылок, и идентификаторы типов (GUID-ы). Есть специальные шаблоны (смарт-поинтеры) для автоматического отключения от объекта. А самое главное, что для этого программисту не нужно прилагать никаких усилий, - вся необходимая инфраструктура формируется визардом ещё на стадии создания проекта. Ну а что ещё нужно для решения задачи? Только грамотно имплементировать методы в собственных интерфейсах...
Из всего выше сказанного делаю вывод:
- нужна фабрика классов,
- нужны счётчики ссылок,
- нужны идентификаторы типов объектов,
- нужны шаблоны для само-освобождения объектов...
Что мешает использовать СОМ-технологию? Там как раз всё это присутствует: и фабрики классов, и счётчики ссылок, и идентификаторы типов (GUID-ы). Есть специальные шаблоны (смарт-поинтеры) для автоматического отключения от объекта. А самое главное, что для этого программисту не нужно прилагать никаких усилий, - вся необходимая инфраструктура формируется визардом ещё на стадии создания проекта. Ну а что ещё нужно для решения задачи? Только грамотно имплементировать методы в собственных интерфейсах...
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
WinMain, там проблема в отслеживании циклических ссылок. Если делать в лоб, то получится очень сложный подход. Я с самого начала сказал, что самым правильным будет кардинально поменять архитектуру вместо того, чтобы попытаться приделать новые костыли к существующей.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.