XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
boolexpr - утечка? о_О
лазил я как то по функциям, и наткнулся на это
call DestroyBoolExpr(b)
подумать логически - это хэндл
выходит, каждый раз делая такую запись
call GroupEnumUnitsInRange(g, x,y, 50., Filter(function b_filter))
создается новый boolexpr который никуда не заносится, следственно не удаляется и в конце концов остается висеть в памяти.
кто что думает по этому поводу?
Старый 11.05.2012, 09:07
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Hatsume_Hate,
Сначало мы создаём бол експр
((код Jass
local boolexpr e = Condion(function *** )
))
Затем юзаем его в группе
((код jass
call GroupEnumUnitsInRange(g, x,y, 50., e)
))
И затем удаляем если он больше ненужен...
((код jass
call GroupEnumUnitsInRange(g, x,y, 50., Filter(function b_filter))
))
Функциии Filter() и Condition создают новый хендл, его нужно удалять... как и локации... и тп.
Старый 11.05.2012, 09:15
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ну я и так уже позатыкал эти утечки, просто было неожиданно когда я об этом узнал, ибо если так посмотреть - гуи это совсем нечто ужасное ._.
Старый 11.05.2012, 09:19
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Hatsume_Hate, ну хотя на гуи то как раз удаляется boolexpr'ы как надо, там тока группы по уродски сделаны...
Старый 11.05.2012, 09:20
Hanabishi
COOL STATUS
offline
Опыт: отключен
Вы всё неправильно делаете.
Старый 11.05.2012, 14:42
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Hanabishi, да это грубый пример, с локальным фильтром...
Порой нужно два фильтра и 2 группы в одной функции...
Старый 11.05.2012, 14:49
Hanabishi
COOL STATUS
offline
Опыт: отключен
quq_CCCP, это пример и кто запрещает ещё создать?
Старый 11.05.2012, 15:06
adic3x

offline
Опыт: 108,439
Активность:
Функции Condition () и Filter () не создают утечек - при попытке создать новый фильтр на конкретную функцию будет возвращен уже существующий.
Hanabishi как обычно написал бред, не слушайте его.
И вообще, используйте последний cJass, где есть удобные и быстрые циклы по группам.
Старый 11.05.2012, 15:40
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
ADOLF, Я праильно понял?
что:
((код jass
local boolexpr e = Condion(function *** )
call GroupEnumUnitsInRange(g, x,y, 50., e)
call DestroyBoolExpr(e)
И
call GroupEnumUnitsInRange(g, x,y, 50., Filter(function b_filter))
call DestroyBoolExpr(Filter(function *** )
))
одно и тоже...
Старый 11.05.2012, 15:54
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Но смысла его удалять в таком случае нет вообще
т.е. юзать просто такую конструкцию всегда
call GroupEnumUnitsInRange(g, x,y, 50., Filter(function b_filter))
Старый 11.05.2012, 17:09
ScorpioT1000
Работаем
offline
Опыт: отключен
То, что вверху написано, не вызывает утечек. Оно работает примерно как строки, функции не плодятся.
Старый 11.05.2012, 17:30
Закрытая тема

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

Расширенный поиск

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

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



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