Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.11.2014, 14:26
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию Разруливание самозамыкания

Как можно разрулить самозамыкание?
Есть локальная переменная, на нее назначается делегат, в делегате идет замыкание на эту же переменную (без замыкания «на „себя”» обойтись достаточно сложно), в итоге получается, что делегат остаётся существовать до завершения работы программы, и из-за этого в рантайме незначительно подтекает память.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
  #2  
Старый 26.11.2014, 17:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
...Есть локальная переменная...
А может сделать её глобалкой? - и делегат какбе не нужон становиться вовсе
  #3  
Старый 26.11.2014, 19:20
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Alegun
А может сделать её глобалкой? - и делегат какбе не нужон становиться вовсе
Они порождаются во время работы, и ссылаются на порожденный объект, который сам управляет своей жизнью. Поэтому «глобалкой» нельзя, да и замыкание на себя это не решит. Делегатом вовсе нельзя управлять извне, иначе можно было бы его по ссылке прибивать.

Внутри делегата нельзя получить явную ссылку на него же, и из-за этого в дельфи хрен просто так реализуешь хвостовую рекурсию.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 26.11.2014 в 19:24.
  #4  
Старый 26.11.2014, 19:38
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Они порождаются во время работы, и ссылаются на порожденный объект, который сам управляет своей жизнью...
А что если делегату овнера прикрутить (если только это всё не абстракт), тогда при объектной "кончине" будет уничтожен и делегат

З.Ы. Правда, Мэд, мог бы что-ли код показать хоть каплеюшку, а то ощущение такое, что здесь ощуп-слона-слепым, в смысле может это и не тот хобот?
  #5  
Старый 27.11.2014, 08:52
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Всё, придумал как легко и непринужденно уйти от замыкания и решить проблему.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 27.11.2014 в 12:04.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter