Расшаренные ссылки на объекты

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Re: Расшаренные ссылки на объекты

Сообщение iskander » 27.11.2020 23:29:48

DedFrend писал(а):Проблему, которую озвучивал я - решает

Я рад за тебя. Но топик не только и не столько о твоей статье.
DedFrend писал(а):И опять-таки ответов на вопросы нет.

Полагаю, твои вопросы заданы людям, которым интересны достоинства и недостатки твоего метода, им и отвечать.
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34

Re: Расшаренные ссылки на объекты

Сообщение Дож » 27.11.2020 23:55:41

DedFrend писал(а):2) Какие проблемы видятся при использовании предложенного метода?

Таблица ограничена сверху (MaxCount=1000) -- не подходит в ситуациях, когда создаётся и освобождается много объектов (сервисы, сложные интерактивные приложения и т.д.). Если объектов в программе создаётся и освобождается мало, то потребность в таком подходе снижается, так как использование малого числа объектов можно отследить и отладить вручную.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Расшаренные ссылки на объекты

Сообщение runewalsh » 27.11.2020 23:57:48

Почему все проигнорировали моё сообщение (viewtopic.php?p=160997#p160997)? Отличный способ, я считаю.

DedFrend
Твой метод неюзабелен как таковой, нечего обсуждать. Похожая задача решается выставлением heaptrc.KeepReleased := true — эта опция никогда не переиспользует память и тем самым позволяет отловить запись в освобождённую память. Ни для чего, кроме (очень ресурсоёмкой) отладки неверных обращений к памяти, это использовать нельзя, но и твоё тоже нельзя, просто это менее очевидно.

>неюзабелен
— Ограничение на максимальное количество указателей. От него можно избавиться через array of array или связный список array'ев, но чёрт, зачем я тебе идеи даю, ты ж реально так сделаешь вместо исправления программы, чтобы вся эта штука была не нужна в принципе.

— Потоконебезопасность. Как там, в 2000?
Конечно, пользователь может создать свой, локальный TPtrList (против глобального), тем самым обеспечив потокобезопасность, а также гарантировав, что никто извне не допишет туда свою тысячу ссылок. Но тогда возникнет вопрос, когда его освобождать: очевидно, он должен быть освобождён после всех хранимых ссылок, а это невозможно отследить.

— Переменная типа class — и так указатель на динамически выделенный объект, концептуально хранение указателя на указатель вместо просто указателя ничего не меняет, в отличие от разницы между хранением по указателю (class/^record) и по значению (record). Почему не пойти дальше и не хранить указатели на указатели на указатели? Это как раз позволит занулить их при уничтожении TPtrList, упомянутом выше. (Шутка.)
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Пред.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

Рейтинг@Mail.ru