К примеру BJ функция:
function GetUnitsInRectMatching takes rect r, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRect(g, r, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
То что созданный отряд надо будет потом удалить - это ясно.
Но создает ли утечку то, что локальная g не очищается?
Или её return очищает?

Принятый ответ

нет, после ретурна выполнение функции прекращается
заводишь глобальную переменную и в неё всё складываешь
globals
group TempGroup=CreateGroup()
endglobals

function GetUnitsInRectMatching takes rect r, boolexpr filter returns group
    call GroupEnumUnitsInRect(TempGroup, r, filter)
    call DestroyBoolExpr(filter)
    return TempGroup
endfunction
ни чистить, ни разрушать эту группу в ходе игры не надо вообще
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
ответ
Игра дает не всегда точное значение высоты.
Высоты чего? Ландшафта? Или юнита? Летающего юнита?
Пока лучше используй наземных даммиков, ибо с летающими пока все запущено.
Возможно, в новом патче пофиксят. Если он вообще будет...

1
18
6 лет назад
1
Насколько мне известно, return просто возвращает результат, не удаляя его.
0
18
6 лет назад
0
Maniac_91:
Насколько мне известно, return просто возвращает результат, не удаляя его.
блин, получается нужно делать что то типо этого?
return g
set g = null
return null
2
12
6 лет назад
2
FabulousTiger:
Maniac_91:
Насколько мне известно, return просто возвращает результат, не удаляя его.
блин, получается нужно делать что то типо этого?
return g
set g = null
return null
После return-а ничего не исполняется, это не вариант.
Я проверил, утечки действительно есть.Решение - не использовать BJ, использовать вместо локальных переменных глобальные.
2
16
6 лет назад
Отредактирован Raised
2
нет, после ретурна выполнение функции прекращается
заводишь глобальную переменную и в неё всё складываешь
globals
group TempGroup=CreateGroup()
endglobals

function GetUnitsInRectMatching takes rect r, boolexpr filter returns group
    call GroupEnumUnitsInRect(TempGroup, r, filter)
    call DestroyBoolExpr(filter)
    return TempGroup
endfunction
ни чистить, ни разрушать эту группу в ходе игры не надо вообще
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.